/* @date:2016-04-26_15_44_33 */
__tk__define("configureModel", ["./lib/jquery", "./models/jsonp", "./models/api", "./product", "./utils", "./host", "./utils/env"],
function(a, b, c) {
    function d(a) {
        h({
            url: i.getConfigure(a),
            timeout: 5e3,
            done: function(a) {
                function b() {
                    a.code >= 2 && (a.ditong = 1),
                    a.code % 2 > 0 && (a.pop = 1)
                }
                b(),
                k.trigger("config.get.success", [a])
            },
            fail: function() {
                k.trigger("config.get.success", [{
                    code: 3
                }])
            }
        })
    }
    function e(a) {
        j.GUID && h({
            url: i.setConfigure(a),
            timeout: 1e4,
            done: function(a) {
                k.trigger("config.set.success", [a])
            }
        })
    }
    function f(a) {
        h({
            url: i.getConfig(a),
            timeout: 5e3,
            done: function(a) {
                // alert(a);
                k.trigger("datashow.config.success", [a]),
                window.tk_setting_all = a
            },
            fail: function() {
                k.trigger("datashow.config.success", [{}]),
                window.tk_setting_all = {}
            }
        })
    }
    var g = a("./lib/jquery"),
    h = a("./models/jsonp"),
    i = a("./models/api"),
    j = a("./utils"),
    k = g("body");
    c.exports = {
        configure: {
            get: d,
            set: e,
            getConfig: f
        }
    }
}),
__tk__define("configureView", ["./lib/jquery", "./configureModel", "./models/jsonp", "./models/api", "./product", "./utils", "./host", "./utils/env", "./templates.jst"],
function(a, b, c) {
    function d() {
        g("body").on({
            "config.get.success": function(a, b) {
                e(b),
                f()
            }
        }),
        h.configure.get()
    }
    function e(a) {
        var b = i["bijia/configure"];
        g("#TTS-config").append(b(a)),
        a.ditong ? g(".TTS-banner-wrap").css("display", "none") : g(".TTS-banner-wrap").css("display", "block")
    }
    function f() {
        g("#TTS-config").on("click",
        function() {
            g(".TK_configure-wrap").toggleClass("TK_hide")
        }),
        g(".TK_configure-wrap").on("click",
        function(a) {
            a.stopPropagation()
        }),
        g(".TK_configure_close").on("click",
        function(a) {
            g(".TK_configure-wrap").addClass("TK_hide")
        }),
        g(".TK_close_wrap").on("click",
        function(a) {
            var b = 0;
            1 === g(this).data("val") ? g(this).data("val", 0) : g(this).data("val", 1),
            g(this).toggleClass("open close"),
            g.each(g(".TK_close_wrap"),
            function(a, c) {
                "ditong" === g(c).data("name") ? (b += 2 * g(c).data("val"), g(c).data("val") ? g(".TTS-banner-wrap").hide() : g(".TTS-banner-wrap").show()) : b += g(c).data("val")
            }),
            h.configure.set(b)
        })
    }
    var g = a("./lib/jquery"),
    h = a("./configureModel"),
    i = a("./templates.jst");
    c.exports = {
        init: d
    }
}),
__tk__define("host", [],
function(a, b, c) {
    var d = window.location,
    e = "",
    f = "",
    g = d.host,
    h = d.pathname,
    i = "search1.taobao.com",
    j = "s.taobao.com",
    k = "list.taobao.com",
    l = "item.taobao.com" === g || "item.beta.taobao.com" === g || "baoxian.taobao.com" === g,
    m = g.match(/detail.tmall/) && !d.href.match(/noitem/),
    n = function() {
        return g.match(/mogujie/) && d.href.match(/detail/) ? !0 : !1
    };
    c.exports = {
        isBuy: "buy.taobao.com" === g || "buy.tmall.com" === g,
        isTBbuy: "buy.taobao.com" === g,
        isTMbuy: "buy.tmall.com" === g,
        isJDbuy: "trade.jd.com" === g,
        isMGJbuy: d.href.match(/http:\/\/www\.mogujie\.com\/trade\/generateorder\/account/),
        isMLSbuy: d.href.match(/http:\/\/order\.meilishuo.com\/order/),
        isVIPbuy: "checkout.vip.com" === g,
        isSuningbuy: d.href.match(/http:\/\/shopping\.suning\.com\/order\.do/) || d.href.match(/http:\/\/cart\.suning.com\/emall\/SNCart2ManageCmd/),
        isTrade: "trade.taobao.com" === g,
        tbSearch1: i,
        tbListS: j,
        tbList: k,
        isTBList: "search.taobao.com" === g || g === i || g === j || "s8.taobao.com" === g || g === k,
        isTMList: "list.tmall.com" === g || "list.mei.tmall.com" === g,
        isTBDetail: l,
        isVipDetail: "www.vip.com" === g && d.href.match(/detail/),
        isVipList: /(list|act|kid|category).vip.com/.test(g),
        isGMDetail: "item.gome.com.cn" === g || "product.gome.com.cn" === g,
        isHomeAMX: "www.amazon.cn" === g && !(d.href.match(/qid/) || d.href.match(/\/dp\//) || d.href.match(/s\/ref/) || d.href.match(/b\/ref/) || d.href.match(/\/gp\//)),
        isAMXDetail: "www.amazon.cn" === g && (d.href.match(/qid/) || d.href.match(/\/dp\//)),
        isAMXList: "www.amazon.cn" === g && (d.href.match(/s\/ref/) || d.href.match(/b\/ref/) || d.href.match(/\/gp\//)),
        isGMList: /(search|list|tuan|q|vip|prom|fashion|market|jiadian|smart|enterprise|computer|bx).gome.com.cn/.test(g) || "www.gome.com.cn" === g || "www.gomehigo.hk" === g,
        isTBCart: d.href.match(/cart.taobao.com\/cart.htm/),
        isTMCart: g.match(/cart.tmall.com/),
        isJDCart: "cart.jd.com" === g,
        isVIPCart: "cart.vip.com" === g,
        isVipCheckout: "checkout.vip.com" === g,
        isJuDetail: "detail.ju.taobao.com" === g,
        isVipShow: d.href.match(/www.vip.com\/show-/),
        isMLSCart: d.href.match(/order.meilishuo.com\/cart/),
        isMGJCart: d.href.match(/www.mogujie.com\/trade\/cart\/mycart/),
        isTMDetail: m,
        isDetail: l || m,
        isTMSubList: /(nvzhuang|nvxie|nanxie|watch|dai|shouji|3c|baby|food|big|jia|car|hua|yao|book|chaoshi).tmall.com/.test(g),
        isTBSub: /(guang|ju|mei|chi|style|sport|nvren|nanren|zln|g|i|lu|cart|shoucang).taobao.com|www.taobao.com|www.jiyoujia.com/.test(g),
        isTM: g.match(/tmall/),
        isTaobao: g.match(/taobao/),
        isTBShop: g.match(/taobao/) && g.match(/shop/),
        isTMShop: g.match(/tmall/) && d.href.match(/shop/),
        isCsTMDetail: g.match(/chaoshi.detail.tmall/),
        isTBFav: "shoucang.taobao.com" === g,
        isMGJList: "search.mogujie.com" === g || "sports.mogujie.com" === g || d.href.match(/mogujie\.com\/book/),
        isMGJDetail: n(),
        isMLSList: g.match(/meilishuo/) && h.match(/guang|pretty|search|group|ihome|person|beauty/),
        isMLSDetail: g.match(/meilishuo/) && d.href.match(/share/),
        isMLS_MGJ: g.match(/mogujie/) || g.match(/meilishuo/),
        isBtnClickList: g === j || "s8.taobao.com" === g || g === k || "list.tmall.com" === g,
        isHomeTaobao: "www.taobao.com" === g,
        isHomeTmall: "www.tmall.com" === g,
        isHomeMGJ: "www.mogujie.com" === g && !d.href.match(/detail/),
        isHomeMLS: "www.meilishuo.com" === g && !d.href.match(/share/),
        isHomeVIP: !d.href.match(/detail/) && d.href.match(/vip\.com/),
        isHomeJD: "www.jd.com" === g,
        isItaobao: "i.taobao.com" === g,
        isJDtrade: "trade.jd.com" === g,
        isB2CList: "list.jd.com" === g || "search.jd.com" === g || "www.jd.hk" === g || "search.jd.hk" === g,
        isB2CDetail: "item.jd.com" === g || d.href.match(/re.jd.com\/cps\/item/) || "item.jd.hk" === g,
        isYHDList: d.href.match(/www.yhd.com\/ctg\/s2|www.1mall.com\/ctg\/s2/) || "search.1mall.com" === g || "search.yhd.com" === g || "list.yhd.com" === g,
        isYHDDetail: "item.1mall.com" === g || "item.yhd.com" === g,
        isYHDHome: "www.yhd.com" === g,
        isJumeiDetail: "item.jumei.com" === g,
        isVjiaList: "list.vjia.com" === g || "s.vjia.com" === g,
        isVjiaDetial: "item.vjia.com" === g,
        isVanclDetail: "item.vancl.com" === g,
        isVanclList: "s.vancl.com" === g,
        isJDSub: /(channel|chaoshi|tuan|red|sale|xuan|mall|gap).jd.com/.test(g),
        isHomeDD: "www.dangdang.com" === g,
        isDDList: /(search|book|bang|e|fashion|baobao|v|living|ddyoupin|chaoshi|shop|inman|myhome|orderb|customer).dangdang.com/.test(g) || "globaldangdang.hk" === g,
        isDDDetail: "product.dangdang.com" === g,
        isHomeSuning: "www.suning.com" === g,
        isSuningList: /(search|list|fashion|chaoshi|binggo|china|dianqi|redbaby|ju|cuxiao|sale|g).suning.com/.test(g) || "www.suning.com" === g,
        isSuningDetail: "product.suning.com" === g,
        isHomeGM: "www.gome.com.cn" === g,
        isWeibo: "weibo.com" === g,
        isHomeJiuxian: "www.jiuxian.com" === g,
        isHomeJumei: /^http:\/\/.*\.jumei\.com\/$/.test(d.href) || "search.jumei.com" === g,
        isJumeiList: /(sh|search|hd).jumei/.test(g),
        isHomeZhe800: "www.zhe800.com" === g,
        isZhe800List: "search.zhe800.com" === g || "brand.zhe800.com" === g || "www.yixun.com" === g,
        isYixunList: "searchex.yixun.com" === g,
        isYixunDetail: "item.yixun.com" === g,
        isHomeNuomi: /^http:\/\/.*\.nuomi.com\/$/.test(d.href),
        isHomePaipai: "www.paipai.com" === g,
        isPaipaiList: "duobao.paipai.com" === g && d.href.match(/list/),
        isPaipaiDetail: "duobao.paipai.com" === g && d.href.match(/item/),
        isHomeMeituan: /^http:\/\/.*\.meituan.com\/$/.test(d.href),
        isAlitripDetail: "items.alitrip.com" === g,
        alimamaShow: !g.match(/taobao|tmall|alitrip/),
        isHomeLeFeng: "www.lefeng.com" === g,
        isLeFengList: "search.lefeng.com" === g,
        isLeFengDeatil: "product.lefeng.com" === g,
        isLeFengBrand: "brand.lefeng.com" === g,
        isLeFengMall: "mall.lefeng.com" === g,
        isLeFengCart: "shopping.lefeng.com" === g,
        isHomeKaoLa: !d.href.match(/kaola\.com\/cart/) && !d.href.match(/kaola\.com\/product/) && d.href.match(/www\.kaola\.com/) || d.href.match(/kaola\.com\/activity/),
        isKaoLaList: d.href.match(/kaola\.com\/search\.html/),
        isKaoLaDetail: d.href.match(/kaola\.com\/product/),
        isKaoLaCart: d.href.match(/kaola\.com\/cart/),
        isNotBeiBeiDetail: d.href.match(/beibei\.com/) && !d.href.match(/beibei\.com\/detail|beibei\.com\/cart/),
        isBeiBeiList: d.href.match(/beibei\.com\/martshow/) || d.href.match(/d\.beibei\.com/) || d.href.match(/global\.beibei\.com\/category/) || !d.href.match(/you\.beibei\.com\/datail/) && d.href.match(/beibei\.com/),
        isBeiBeiDetail: d.href.match(/www\.beibei\.com\/detail/) || d.href.match(/global\.beibei\.com\/detail/) || d.href.match(/you\.beibei\.com\/detail/),
        isBeiBeiCart: "trade.beibei.com" === g,
        isFengQu: !d.href.match(/www\.fengqu\.com\/detail/) && "www.fengqu.com" === g,
        isFengQuList: d.href.match(/fengqu\.com\/y|fengqu\.com\/other\/search|fengqu\.com\/activity/),
        isFengQuDetail: d.href.match(/www\.fengqu\.com\/detail/),
        isMia: !d.href.match(/www\.mia\.com\/item-/) && "www.mia.com" === g,
        isMiaDetail: d.href.match(/www\.mia\.com\/item-/),
        isStrawberrynet: !d.href.match(/DETAIL/) && "cn.strawberrynet.com" === g,
        isStrawberrynetDetail: d.href.match(/DETAIL/) && "cn.strawberrynet.com" === g,
        isYmatou: !d.href.match(/ymatou\.com\/product|ymatou\.com\/Product/) && "www.ymatou.com" === g || "c.ymatou.com" === g,
        isYmatouList: d.href.match(/ymatou\.com\/Products/),
        isYmatouDetail: !d.href.match(/Products/) && d.href.match(/ymatou\.com\/product|ymatou\.com\/Product/),
        isQQ: d.host.match(/\.qq\.com$/)
    },
    c.exports.isTBList || c.exports.isHomeTaobao || c.exports.isTBSub ? (e = 1, f = "taobao") : c.exports.isTBFav ? (e = 11, f = "taobao") : c.exports.isTBCart ? (e = 12, f = "taobao") : c.exports.isTMList || c.exports.isTMSubList ? (e = 2, f = "tmall") : c.exports.isTMCart ? (e = 22, f = "tmall") : c.exports.isTBDetail || c.exports.isJuDetail ? (e = 3, f = "taobao") : c.exports.isTMDetail || c.exports.isHomeTmall ? (e = 4, f = "tmall") : c.exports.isShop ? (e = 5, f = "taobao") : c.exports.isTrade ? (e = 8, f = "taobao") : c.exports.isMGJList || c.exports.isHomeMGJ ? (e = 61, f = "mogujie") : c.exports.isMGJDetail || c.exports.isMGJCart ? (e = 62, f = "mogujie") : c.exports.isMLSList || c.exports.isHomeMLS ? (e = 71, f = "meilishuo") : c.exports.isMLSDetail || c.exports.isMLSCart ? (e = 72, f = "meilishuo") : c.exports.isB2CList || c.exports.isHomeJD || c.exports.isJDSub ? (e = "B11", f = "jd.com") : c.exports.isB2CDetail || c.exports.isJDCart ? (e = "B12", f = "jd.com") : c.exports.isYHDList ? (e = "B21", f = "yihaodian") : c.exports.isYHDDetail ? (e = "B22", f = "yihaodian") : c.exports.isDDList ? (e = "B31", f = "dangdang") : c.exports.isDDDetail ? (e = "B32", f = "dangdang") : c.exports.isSuningList ? (e = "B51", f = "suning") : c.exports.isSuningDetail ? (e = "B52", f = "suning") : c.exports.isVjiaList ? (e = "B91", f = "vjia") : c.exports.isVjiaDetial ? (e = "B92", f = "vjia") : c.exports.isAMXList || c.exports.isHomeAMX ? (e = "B71", f = "amazon") : c.exports.isAMXDetail ? (e = "B72", f = "amazon") : c.exports.isGMList ? (e = "B41", f = "gome") : c.exports.isGMDetail ? (e = "B42", f = "gome") : c.exports.isVipList || c.exports.isVIPCart ? (e = "B61", f = "vip") : c.exports.isVipDetail ? (e = "B62", f = "vip") : c.exports.isVanclDetail ? (e = "B82", f = "vancl") : c.exports.isYixunDetail ? f = "yixun": c.exports.isPaipaiDetail || c.exports.isPaipaiList ? (e = "B82", f = "paipai") : (e = "999", f = "else"),
    c.exports.pageType = e,
    c.exports.webSite = f
}),
__tk__define("init", ["./load", "./lib/jquery", "./utils", "./host", "./product", "./configureModel", "./models/jsonp", "./models/api", "./utils/env", "./views/views", "./views/prefix", "./views/event.handle", "./lib/underscore", "./views/bijia/main", "./views/bijia/taobao", "./templates.jst", "./utils/tts_stat", "./models/models", "./models/taobao", "./models/b2c", "./models/remind", "./models/lds", "./models/juxiao", "./models/tuan", "./configureView", "./mustache_helpers", "./lib/handlebars", "./views/bijia/taobao.remind", "./views/remind/main", "./views/remind/qutu", "./views/remind/under", "./views/bijia/list", "./models/ditong", "./lib/jquery.popunder", "./views/juzi/taobao", "./views/juzi/taobao.qutu", "./views/juzi/mid", "./lib/jquery.tmpl", "./views/juzi/mid.qutu", "./views/juzi/mid.under", "./views/juxiao", "./views/juxiaoJuzi", "./views/cart", "./views/lds/main", "./lib/dragdrop", "./templates", "./views/alimama", "./views/db11Banner", "./spider", "./log", "./searchbar"],
function(a) {
    function b() {
        var a = "44,45,46,49,50,51,55,57";
        return (k.isAMXList || k.isNotBeiBeiDetail || k.isKaoLaList || k.isHomeKaoLa || k.isHomeLeFeng || k.isLeFengList || k.isLeFengBrand || k.isLeFengMall || k.isTBList || k.isTMList || k.isB2CList || k.isVanclList || k.isPaipaiList || k.isHomeTaobao || k.isHomeTmall || k.isHomeJD || k.isYHDList || k.isZhe800List || k.isMGJList || k.isMLSList || k.isVipList || k.isSuningList || k.isYixunList || k.isHomeMGJ || k.isHomeMLS || k.isHomeVIP || k.isHomeSuning || k.isYHDHome || k.isHomeJiuxian || k.isHomeGM || k.isGMList || k.isHomeJiuxian || k.isHomeDD || k.isHomeAMX || k.isHomeZhe800 || k.isHomeMGJ || k.isHomeNuomi || k.isHomePaipai || k.isHomeMeituan || k.isHomeJumei || k.isFengQu || k.isLeFengList || k.isMia || k.isStrawberrynet || k.isYmatou || k.isYmatouList) && (a += ",42,52"),
        (k.isYmatouDetail || k.isStrawberrynetDetail || k.isMiaDetail || k.isFengQuDetail || k.isBeiBeiDetail || k.isKaoLaDetail || k.isLeFengDeatil || k.isTBDetail || k.isTMDetail || k.isB2CDetail || k.isYixunDetail || k.isVipDetail || k.isMGJDetail || k.isMLSDetail || k.isJuDetail || k.isYHDDetail || k.isGMDetail || k.isPaipaiDetail || k.isJumeiDetail || k.isVjiaDetial || k.isDDDetail || k.isSuningDetail || k.isVanclDetail || k.isAMXDetail || k.isAlitripDetail) && (a += ",41,48"),
        location.host.match(/qzone\.qq\.com/) && (a += ",43"),
        location.host.match(/www\.baidu\.com/) && (a += ",53"),
        location.host.match(/www\.hao123\.com/) && (a += ",60"),
        location.host.match(/1688\.com/) && (a += ",47"),
        (k.isTM || k.isTaobao) && (a += ",58"),
        k.isQQ && (a += ",59"),
        a
    }
    function c() {
        return "www.amazon.cn" === t ? (s = i("#wayfinding-breadcrumbs_feature_div .a-link-normal:first-child").html(), r = i("#priceblock_ourprice").html()) : "www.amazon.co.jp" === t ? (s = i("#wayfinding-breadcrumbs_feature_div .a-link-normal:first-child").html(), r = i("#priceblock_ourprice").html()) : "www.amazon.com" === t ? (s = i("#wayfinding-breadcrumbs_feature_div .a-link-normal:first-child").html(), r = i("#priceblock_ourprice").html()) : "www.6pm.com" === t ? (s = i("#breadcrumbs a:nth-child(2)").html(), r = i("#priceSlot .price").html()) : "www.6pm.com" === t ? (s = i("#breadcrumbs a:nth-child(2)").html(), r = i("#priceSlot .price").html()) : "www.kaola.com" === t ? (s = i(".crumbs-title").html(), r = i(".PInfo_r .currentPrice").html()) : "www.mia.com" === t ? (s = i(".songti a:nth-child(2)").html(), r = i("#item_price").html()) : "www.fengqu.com" === t ? (s = i(".crumbs a:nth-child(3)").html(), r = i(".goods-price-r1 strong").html()) : "www.ymatou.com" === t ? (s = i("#breadcrumb a:nth-child(2)").html(), r = i("#proDetail .promotion .count").html()) : location.href.match(/www\.windeln\.de\/zh/) ? (s = i(".breadcrumbs a:nth-child(2)").html(), r = i(".product-price span:nth-child(1) span:nth-child(1)").html()) : "www.sasa.com" === t ? (s = i(".bread-crumbs a:nth-child(2)").html(), r = i(".action-price").html()) : location.href.match(/global\.rakuten\.com\/zh-cn/) ? (s = i(".b-breadcrumb a:nth-child(2)").html(), r = i("#price_in_dollars").html()) : "www.vip.com" === t ? (s = i(".pib-title-detail").html(), r = i(".pbox-price em").html()) : "cn.strawberrynet.com" === t ? (s = i("#divProdName h2").html(), r = i(".intPrice").html() + i(".decPrice").html()) : "www.carters.com" === t ? (s = i(".breadcrumb span:nth-child(1)").html(), r = i("#product-content .price-sales ").html()) : "item.jd.hk" === t ? (s = encodeURIComponent(i(".jqzoom img").attr("alt")), r = i("#jd-price").html().replace(/<em>¥<\/em>/, "")) : "www.lookfantastic.com" === t ? (s = i(".breadcrumbs li:nth-child(3)").html(), r = i(".price").html()) : "www.esteelauder.com" === t ? (s = i(".product-full__subtitle").html(), r = i(".product-full__price").html()) : "www.origins.com" === t ? (s = i(".product-breadcrumb__link--category").html(), r = i(".product-sku-price__value").html()) : "www.saksfifthavenue.com" === t ? (s = i(".detail-column h1 a").html(), r = i(".list-price .value").html().replace(/CNY/, "")) : "www.vitacost.com" === t ? (s = i(".bcs a:nth-child(1)").html(), r = i(".mainPrice").html().replace(/Our Price /, "")) : "www.gnc.com" === t ? (s = i("#breadcrumbs a:nth-child(2)").html(), r = i("#product-info .now").html().replace(/Sale Price: /, "")) : "item.jumeiglobal.com" === t ? (s = i("#stream_id").attr("search_short_name"), r = i(".jumei_price").html().replace(/<em class="jp_cur">¥<\/em>/, "")) : "www.wiggle.cn" === t ? (s = i("#breadcrumbs li:nth-child(2) a").html(), r = i(".bem-product-price__unit--pdp").html()) : "cn.shopbop.com" === t ? (s = i(".product-title").html(), r = i(".priceBlock").html().replace(/US/, "")) : "www.clinique.com" === t ? (s = i(".bvflow_hide h1").html(), r = i(".formatted_price").html().replace(/US/, "")) : "www.gilt.com" === t ? (s = i("#breadcrumbs li:nth-child(1) a").html(), r = i(".product-price-sale").html()) : "www.newbalance.com" === t ? (s = i("h1.product-name").html(), r = i(".price").html()) : "www.joesnewbalanceoutlet.com" === t ? (s = i("font:nth-child(1)").html(), r = i(".price").html().replace(/Now: /, "")) : location.href.match(/www\.levi\.com\/US\/en_US/) ? (s = i("#FISTitle h1").html(), r = i(".then-price").html()) : "store.nike.com" === t ? (s = i(".exp-product-title").html(), r = i(".exp-pdp-local-price").html()) : "www.uggaustralia.com" === t ? (s = i("h1.product-name span").html(), r = i(".product__price--sales").html()) : "us.burberry.com" === t ? (s = i("h1.product-title").html(), r = i(".price-amount").html()) : "detail.tmall.hk" === t ? (r = i("#J_PromoPrice .tm-price").html(), s = i("html").html().match(/categoryId\:[0-9]{8}/).toString().match(/[0-9]{8}/)) : "www.victoriassecret.com" === t ? (s = i(".pdp-info.box.split.primary h1").html(), r = i(".pdp-info.box.split.primary .price p").html()) : "www.myhabit.com" === t && (s = i("#pdHeader").html(), r = i("#ourPrice").html()),
        void 0 === s ? !1 : (q = s, void 0 === r ? !1 : (r = r.toString(), r.match(/&nbsp;/) && (r = r.replace(/&nbsp;/, "")), r.match(/,/) && (r = r.replace(/,/, "")), r.match(/\-/) && (r = r.replace(/\-/, ""), r.match(/\$/) ? r = r.replace(/\$/, "") : r.match(/\￥/) && (r = r.replace(/\￥/, ""))), r.match(/\€/) ? (r = r.replace(/\€/, ""), r = parseFloat(r) * parseFloat(7.1), d(r, q), !0) : r.match(/\£/) ? (r = r.replace(/\£/, ""), r = parseFloat(r) * parseFloat(9.6), d(r, q), !0) : r.match(/\$/) ? (r = r.replace(/\$/, ""), r = parseFloat(r) * parseFloat(6.5), d(r, q), !0) : r.match(/\￥/) ? (r = r.replace(/\￥/, ""), "www.amazon.co.jp" === t && (r = parseFloat(r) / parseFloat(18.6)), d(r, q), !0) : void d(r, q)))
    }
    function d(a, b) {
        void 0 !== a && void 0 !== b && j.statLog_one({
            systemName: "ttk_haitao",
            price: a,
            category: b,
            host: location.host
        })
    }
    function e() {
        if (k.isBuy) {
            var a = null,
            b = document.cookie.replace(/.*tracknick=/, "").replace(/;.*/, "");
            a = setInterval(function() {
                document.getElementById("J_Go") && (k.isTBbuy ? (j.statLog_img({
                    systemName: "tts_buy_info",
                    cat: "all",
                    type: "alldd",
                    num: i(".buy-order-field .item").length,
                    sum: i("#J_ActualFee").text().replace(/\./, "")
                }), document.referrer.match(/tts_shield=true/) && (j.statLog_img({
                    systemName: "tts_buy_info",
                    cat: "tts",
                    type: "ttsdd",
                    num: 1,
                    sum: i("#J_ActualFee").text().replace(/\./, "")
                }), i("#J_Go").on("click",
                function() {
                    j.statLog_img({
                        systemName: "tts_buy_info",
                        cat: "tts",
                        type: "ttsddclick",
                        num: i(".buy-order-field .item").length,
                        sum: i("#J_ActualFee").text().replace(/\./, "")
                    })
                })), i("#J_Go").on("click",
                function() {
                    j.statLog_img({
                        systemName: "tts_buy_info",
                        cat: "all",
                        type: "ddclick",
                        num: i(".buy-order-field .item").length,
                        sum: i("#J_ActualFee").text().replace(/\./, ""),
                        website: "taobao"
                    })
                }), j.statLog_one({
                    systemName: "ttk_tbUserMsg_log",
                    nick: b,
                    level: j.getUserLevel(),
                    weibo: "",
                    mobile: i(".user-address").eq(0).find("em").text()
                })) : k.isTMbuy && (j.statLog_img({
                    systemName: "tts_buy_info",
                    cat: "all",
                    type: "alldd",
                    num: i(".grid-order").length,
                    sum: i("#J_RealPay").text().replace(/\./, "")
                }), document.referrer.match(/tts_shield=true/) && (j.statLog_img({
                    systemName: "tts_buy_info",
                    cat: "tts",
                    type: "ttsdd",
                    num: 1,
                    sum: i("#J_RealPay").text().replace(/\./, "")
                }), i("#J_Go").on("click",
                function() {
                    j.statLog_img({
                        systemName: "tts_buy_info",
                        cat: "tts",
                        type: "ttsddclick",
                        num: i(".grid-order").length,
                        sum: i("#J_RealPay").text().replace(/\./, "")
                    })
                })), i("#J_Go").on("click",
                function() {
                    j.statLog_img({
                        systemName: "tts_buy_info",
                        cat: "all",
                        type: "ddclick",
                        num: i(".grid-order").length,
                        sum: i("#J_RealPay").text().replace(/\./, ""),
                        website: "tmall"
                    })
                }), j.statLog_one({
                    systemName: "ttk_tbUserMsg_log",
                    nick: b,
                    level: j.getUserLevel(),
                    weibo: "",
                    mobile: i(".addr-bd").eq(0).find(".phone").text()
                })), window.document.referrer.match(/cart.taobao.com/) && (k.isTBbuy ? (i("#J_Go").on("click",
                function() {
                    j.statLog_img({
                        systemName: "tts_buy_info",
                        cat: "all",
                        type: "gwcddclick",
                        num: i(".buy-order-field .item").length,
                        sum: i("#J_ActualFee").text().replace(/\./, "")
                    })
                }), j.statLog_img({
                    systemName: "tts_buy_info",
                    cat: "all",
                    type: "gwcdd",
                    num: i(".buy-order-field .item").length,
                    sum: i("#J_ActualFee").text().replace(/\./, "")
                })) : k.isTMbuy && (i("#J_Go").on("click",
                function() {
                    j.statLog_img({
                        systemName: "tts_buy_info",
                        cat: "all",
                        type: "gwcddclick",
                        num: i(".grid-order").length,
                        sum: i("#J_RealPay").text().replace(/\./, "")
                    })
                }), j.statLog_img({
                    systemName: "tts_buy_info",
                    cat: "all",
                    type: "gwcdd",
                    num: i(".grid-order").length,
                    sum: i("#J_RealPay").text().replace(/\./, "")
                }))), window.document.referrer.match(/tuan.taotaosou/) && (k.isTBbuy ? j.statLog_img({
                    systemName: "tts_buy_info",
                    cat: "tts_tuan",
                    type: "alldd",
                    num: i(".buy-order-field .item").length,
                    sum: i("#J_ActualFee").text().replace(/\./, "")
                }) : k.isTMbuy && j.statLog_img({
                    systemName: "tts_buy_info",
                    cat: "tts_tuan",
                    type: "alldd",
                    num: i(".grid-order").length,
                    sum: i("#J_RealPay").text().replace(/\./, "")
                })), clearInterval(a), a = null)
            },
            200)
        } else k.isJDbuy ? (f = i("#order-submit"), f && f.on("click",
        function(a) {
            j.statLog_img({
                systemName: "tts_buy_info",
                cat: "all",
                type: "ddclick",
                num: i(".shopping-list").length,
                sum: Math.floor(100 * document.getElementById("payPriceId").textContent.replace(/￥/, "")),
                website: "jd"
            })
        })) : k.isMGJbuy ? (f = i(".cart_surebtn"), f && f.on("click",
        function(a) {
            j.statLog_img({
                systemName: "tts_buy_info",
                cat: "all",
                type: "ddclick",
                num: i("td.cart_table_goods_wrap").length,
                sum: Math.floor(100 * document.getElementsByClassName("goodsSum")[0].textContent.replace(/¥/, "")),
                website: "mogujie"
            })
        })) : k.isMLSbuy ? (f = i("#charge"), f && f.on("click",
        function(a) {
            j.statLog_img({
                systemName: "tts_buy_info",
                cat: "all",
                type: "ddclick",
                num: i(".goods").length,
                sum: Math.floor(100 * document.getElementById("total_price").textContent.replace(/￥/, "")),
                website: "meilishuo"
            })
        })) : k.isVIPbuy ? (f = i(".J_order_submit_btn"), f && f.on("click",
        function(a) {
            j.statLog_img({
                systemName: "tts_buy_info",
                cat: "all",
                type: "ddclick",
                num: i(".product-row").length,
                sum: Math.floor(100 * document.getElementsByClassName("J_amount_0")[0].textContent.replace(/￥/, "")),
                website: "vip"
            })
        })) : k.isSuningbuy && ("cart.suning.com/" === location.host ? (f = i("#oneKeySub"), f && f.on("click",
        function(a) {
            j.statLog_img({
                systemName: "tts_buy_info",
                cat: "all",
                type: "ddclick",
                num: i(".tableleft").length,
                sum: Math.floor(100 * document.getElementById("orderTotalI").textContent.replace(/¥/, "")),
                website: "vip"
            })
        })) : "shopping.suning.com" === location.host && (f = i("#submit-btn"), f && f.on("click",
        function(a) {
            j.statLog_img({
                systemName: "tts_buy_info",
                cat: "all",
                type: "ddclick",
                num: i(".product").length,
                sum: Math.floor(100 * document.getElementById("payAmountID").textContent.replace(/¥/, "").replace(/$/, "00")),
                website: "vip"
            })
        })));
        o = document.getElementById("J_ImgBooth") ? new l(document.getElementById("J_ImgBooth")) : {},
        window.document.referrer.match(/tuan.taotaosou/) && (k.isTMDetail && (i("#J_LinkBuy ").on("click",
        function() {
            "undefined" == typeof tk_goumai && (j.statLog_img({
                systemName: "tts_buy_info",
                cat: "tts_tuan",
                type: "gm",
                num: 1,
                shopId: i("#LineZing").attr("shopid"),
                cid: o.getCid(),
                pid: o.getID(),
                userNick: b,
                refer: encodeURIComponent(document.referrer),
                sum: o.getPrice()
            }), window.tk_goumai = !0)
        }), i("#J_LinkBasket").on("click",
        function() {
            "undefined" == typeof tk_shoucang && (j.statLog_img({
                systemName: "tts_buy_info",
                cat: "tts_tuan",
                type: "gwc",
                num: 1,
                shopId: i("#LineZing").attr("shopid"),
                cid: o.getCid(),
                pid: o.getID(),
                userNick: b,
                refer: encodeURIComponent(document.referrer),
                sum: o.getPrice()
            }), window.tk_shoucang = !0)
        }), i("#J_AddFavorite").on("click",
        function() {
            "undefined" == typeof tk_sc && (j.statLog_img({
                systemName: "tts_buy_info",
                cat: "tts_tuan",
                type: "sc",
                num: 1,
                shopId: i("#LineZing").attr("shopid"),
                cid: o.getCid(),
                pid: o.getID(),
                userNick: b,
                refer: encodeURIComponent(document.referrer),
                sum: o.getPrice()
            }), window.tk_sc = !0)
        })), k.isTBDetail && (i(".J_LinkBuy").on("click",
        function() {
            "undefined" == typeof tk_goumai && (j.statLog_img({
                systemName: "tts_buy_info",
                cat: "tts_tuan",
                type: "gm",
                shopId: i("#LineZing").attr("shopid"),
                cid: o.getCid(),
                pid: o.getID(),
                userNick: b,
                refer: encodeURIComponent(document.referrer),
                num: 1,
                sum: o.getPrice()
            }), window.tk_goumai = !0)
        }), i(".J_LinkAdd").on("click",
        function() {
            "undefined" == typeof tk_shoucang && (j.statLog_img({
                systemName: "tts_buy_info",
                cat: "tts_tuan",
                type: "gwc",
                shopId: i("#LineZing").attr("shopid"),
                cid: o.getCid(),
                pid: o.getID(),
                userNick: b,
                num: 1,
                sum: o.getPrice()
            }), window.tk_shoucang = !0)
        }), i(".J_TDialogTrigger").on("click",
        function() {
            "undefined" == typeof tk_sc && (j.statLog_img({
                systemName: "tts_buy_info",
                cat: "tts_tuan",
                type: "sc",
                shopId: i("#LineZing").attr("shopid"),
                cid: o.getCid(),
                pid: o.getID(),
                userNick: b,
                refer: encodeURIComponent(document.referrer),
                num: 1,
                sum: o.getPrice()
            }), window.tk_sc = !0)
        }))),
        k.isTMDetail && (i("#J_LinkBuy").on("click",
        function() {
            "undefined" == typeof tk_all_goumai && (j.statLog_img({
                systemName: "tts_buy_info",
                cat: "all",
                type: "gm",
                num: 1,
                shopId: i("#LineZing").attr("shopid"),
                cid: o.getCid(),
                pid: o.getID(),
                userNick: b,
                refer: encodeURIComponent(document.referrer),
                sum: o.getPrice()
            }), window.tk_all_goumai = !0)
        }), i("#J_LinkBasket").on("click",
        function() {
            "undefined" == typeof tk_all_shoucang && (j.statLog_img({
                systemName: "tts_buy_info",
                cat: "all",
                type: "gwc",
                shopId: i("#LineZing").attr("shopid"),
                cid: o.getCid(),
                pid: o.getID(),
                userNick: b,
                refer: encodeURIComponent(document.referrer),
                num: 1,
                sum: o.getPrice()
            }), window.tk_all_shoucang = !0)
        }), i("#J_AddFavorite").on("click",
        function() {
            "undefined" == typeof tk_all_sc && (j.statLog_img({
                systemName: "tts_buy_info",
                cat: "all",
                type: "sc",
                shopId: i("#LineZing").attr("shopid"),
                cid: o.getCid(),
                pid: o.getID(),
                userNick: b,
                refer: encodeURIComponent(document.referrer),
                num: 1,
                sum: o.getPrice()
            }), window.tk_all_sc = !0)
        })),
        k.isTBDetail && (i(".J_LinkBuy").on("click",
        function() {
            "undefined" == typeof tk_all_goumai && (j.statLog_img({
                systemName: "tts_buy_info",
                cat: "all",
                type: "gm",
                num: 1,
                shopId: i("#LineZing").attr("shopid"),
                cid: o.getCid(),
                pid: o.getID(),
                userNick: b,
                refer: encodeURIComponent(document.referrer),
                sum: o.getPrice()
            }), window.tk_all_goumai = !0)
        }), i(".J_LinkAdd").on("click",
        function() {
            "undefined" == typeof tk_all_shoucang && (j.statLog_img({
                systemName: "tts_buy_info",
                cat: "all",
                type: "gwc",
                num: 1,
                shopId: i("#LineZing").attr("shopid"),
                cid: o.getCid(),
                pid: o.getID(),
                userNick: b,
                refer: encodeURIComponent(document.referrer),
                sum: o.getPrice()
            }), window.tk_all_shoucang = !0)
        }), i(".J_TDialogTrigger").on("click",
        function() {
            "undefined" == typeof tk_all_sc && (j.statLog_img({
                systemName: "tts_buy_info",
                cat: "all",
                type: "sc",
                num: 1,
                shopId: i("#LineZing").attr("shopid"),
                cid: o.getCid(),
                pid: o.getID(),
                userNick: b,
                refer: encodeURIComponent(document.referrer),
                sum: o.getPrice()
            }), window.tk_all_sc = !0)
        }));
        var c = window.location.href;
        if (c.match(/ttid/)) {
            var d = j.getUrlParam(c, "ttid");
            k.isTMDetail && (i("#J_LinkBuy").on("click",
            function() {
                "undefined" == typeof tk_goumai_sun && (j.statLog_img({
                    systemName: "ttk_ad_track",
                    ttid: d,
                    type: 1
                }), window.tk_goumai_sun = !0)
            }), i("#J_LinkBasket").on("click",
            function() {
                "undefined" == typeof tk_shoucang_sun && (j.statLog_img({
                    systemName: "ttk_ad_track",
                    ttid: d,
                    type: 2
                }), window.tk_shoucang_sun = !0)
            }), i("#J_AddFavorite").on("click",
            function() {
                "undefined" == typeof tk_sc_sun && (j.statLog_img({
                    systemName: "ttk_ad_track",
                    ttid: d,
                    type: 3
                }), window.tk_sc_sun = !0)
            })),
            k.isTBDetail && (i(".J_LinkBuy").on("click",
            function() {
                "undefined" == typeof tk_goumai_sun && (j.statLog_img({
                    systemName: "ttk_ad_track",
                    ttid: d,
                    type: 1
                }), window.tk_goumai_sun = !0)
            }), i(".J_LinkAdd").on("click",
            function() {
                "undefined" == typeof tk_shoucang_sun && (j.statLog_img({
                    systemName: "ttk_ad_track",
                    ttid: d,
                    type: 2
                }), window.tk_shoucang_sun = !0)
            }), i(".J_TDialogTrigger").on("click",
            function() {
                "undefined" == typeof tk_sc_sun && (j.statLog_img({
                    systemName: "ttk_ad_track",
                    ttid: d,
                    type: 3
                }), window.tk_sc_sun = !0)
            }))
        }
    }
    window.TTS_initTime = (new Date).getTime();
    var f, g, h = a("./load"),
    i = a("./lib/jquery"),
    j = a("./utils"),
    k = a("./host"),
    l = a("./product"),
    m = a("./configureModel"),
    n = a("./views/views"),
    o = {},
    p = 10;
    m.configure.getConfig(b()),
    a("./log").init();
    var q, r, s, t = location.host;
    if (c(), (k.isBuy || k.isTBDetail || k.isTMDetail || k.isJDbuy || k.isMGJbuy || k.isMLSbuy || k.isVIPbuy || k.isSuningbuy) && setTimeout(function() {
        e()
    },
    800), !h.result) return ! 1;
    if ((k.isBtnClickList || k.isHomeTaobao) && a("./searchbar").init(), g = setInterval(function() {
        return window.tk_setting_all ? (clearInterval(g), n.init()) : p ? void(p -= 1) : clearInterval(g)
    },
    100), j.stat("PV", !0), (k.isTBList || k.isTMList) && j.statReferrer(), k.isTBFav) {
        var u = window.location.href;
        if (u.match(/item_collect.htm/)) {
            var v = i(".J_FavListItem");
            v[0] && v.each(function(a, b) {
                var c = i(b),
                d = "",
                e = "";
                j.statLog_img({
                    systemName: "ttk_user_info",
                    pType: k.pageType,
                    title: encodeURIComponent(c.find("a").attr("title")),
                    pid: j.sliceID(c.find("a").attr("href")),
                    price: c.find(".g_price strong").text(),
                    list_num: a + 1,
                    cid: d,
                    trade_time: e
                })
            })
        }
    }
    i("body").html().match(/如意淘/) && j.stat("Ru_Yi_Tao", !0),
    i("#youdaoGWZS")[0] && j.stat("Hui_Hui", !0),
    i(".J_tts_bubble_logo").hide(),
    j.baidu()
}),
__tk__define("lib/dragdrop", [],
function(a, b, c) {
    function d(a, b) {
        var c = this;
        this._obj = a,
        this._mouseStart = {},
        this._divStart = {},
        this.clientWidth = document.body.clientWidth,
        this._obj.onmousedown = function(a) {
            c._startDrag(a)
        }
    }
    d.prototype._startDrag = function(a) {
        var b = this,
        c = a || event;
        this._mouseStart.x = c.clientX,
        this._mouseStart.y = c.clientY,
        this._divStart.x = this._obj.offsetLeft,
        this._divStart.y = this._obj.offsetTop,
        this._obj.setCapture ? (this._obj.onmousemove = function(a) {
            b._doDrag(a)
        },
        this._obj.onmouseup = function(a) {
            b._stopDrag(a)
        },
        this._obj.setCapture()) : (this._doDrags = function(a) {
            b._doDrag(a)
        },
        this._stopDrags = function(a) {
            b._stopDrag(a)
        },
        document.addEventListener("mousemove", this._doDrags, !0), document.addEventListener("mouseup", this._stopDrags, !0))
    },
    d.prototype._doDrag = function(a) {
        var b = a || event,
        c = b.clientX - this._mouseStart.x + this._divStart.x,
        d = b.clientY - this._mouseStart.y + this._divStart.y;
        30 >= c && (c = 0),
        c > this.clientWidth - this._obj.offsetWidth - 30 && (c = this.clientWidth - this._obj.offsetWidth),
        this._obj.style.left = c + "px",
        this._obj.style.top = d + "px"
    },
    d.prototype._stopDrag = function(a) {
        this._obj.releaseCapture ? (this._obj.onmousemove = null, this._obj.onmouseup = null, this._obj.releaseCapture()) : (document.removeEventListener("mousemove", this._doDrags, !0), document.removeEventListener("mouseup", this._stopDrags, !0), this._doDrags = this._stopDrags = null)
    },
    c.exports = d
}),
__tk__define("lib/handlebars", [],
function(a, b, c) {
    var d = {};
    return function(a, b) {
        a.VERSION = "1.0.0",
        a.COMPILER_REVISION = 4,
        a.REVISION_CHANGES = {
            1 : "<= 1.0.rc.2",
            2 : "== 1.0.0-rc.3",
            3 : "== 1.0.0-rc.4",
            4 : ">= 1.0.0"
        },
        a.helpers = {},
        a.partials = {};
        var c = Object.prototype.toString,
        d = "[object Function]",
        e = "[object Object]";
        a.registerHelper = function(b, d, f) {
            if (c.call(b) === e) {
                if (f || d) throw new a.Exception("Arg not supported with multiple helpers");
                a.Utils.extend(this.helpers, b)
            } else f && (d.not = f),
            this.helpers[b] = d
        },
        a.registerPartial = function(b, d) {
            c.call(b) === e ? a.Utils.extend(this.partials, b) : this.partials[b] = d
        },
        a.registerHelper("helperMissing",
        function(a) {
            if (2 === arguments.length) return b;
            throw new Error("Missing helper: '" + a + "'")
        }),
        a.registerHelper("blockHelperMissing",
        function(b, e) {
            var f = e.inverse ||
            function() {},
            g = e.fn,
            h = c.call(b);
            return h === d && (b = b.call(this)),
            b === !0 ? g(this) : b === !1 || null == b ? f(this) : "[object Array]" === h ? b.length > 0 ? a.helpers.each(b, e) : f(this) : g(b)
        }),
        a.K = function() {},
        a.createFrame = Object.create ||
        function(b) {
            a.K.prototype = b;
            var c = new a.K;
            return a.K.prototype = null,
            c
        },
        a.logger = {
            DEBUG: 0,
            INFO: 1,
            WARN: 2,
            ERROR: 3,
            level: 3,
            methodMap: {
                0 : "debug",
                1 : "info",
                2 : "warn",
                3 : "error"
            },
            log: function(b, c) {
                if (a.logger.level <= b) {
                    var d = a.logger.methodMap[b];
                    "undefined" != typeof console && console[d] && console[d].call(console, c)
                }
            }
        },
        a.log = function(b, c) {
            a.logger.log(b, c)
        },
        a.registerHelper("each",
        function(b, e) {
            var f, g = e.fn,
            h = e.inverse,
            i = 0,
            j = "",
            k = c.call(b);
            if (k === d && (b = b.call(this)), e.data && (f = a.createFrame(e.data)), b && "object" == typeof b) if (b instanceof Array) for (var l = b.length; l > i; i++) f && (f.index = i),
            j += g(b[i], {
                data: f
            });
            else for (var m in b) b.hasOwnProperty(m) && (f && (f.key = m), j += g(b[m], {
                data: f
            }), i++);
            return 0 === i && (j = h(this)),
            j
        }),
        a.registerHelper("if",
        function(b, e) {
            var f = c.call(b);
            return f === d && (b = b.call(this)),
            !b || a.Utils.isEmpty(b) ? e.inverse(this) : e.fn(this)
        }),
        a.registerHelper("unless",
        function(b, c) {
            return a.helpers["if"].call(this, b, {
                fn: c.inverse,
                inverse: c.fn
            })
        }),
        a.registerHelper("with",
        function(b, e) {
            var f = c.call(b);
            return f === d && (b = b.call(this)),
            a.Utils.isEmpty(b) ? void 0 : e.fn(b)
        }),
        a.registerHelper("log",
        function(b, c) {
            var d = c.data && null != c.data.level ? parseInt(c.data.level, 10) : 1;
            a.log(d, b)
        });
        var f = function() {
            function a() {
                this.yy = {}
            }
            var b = {
                trace: function() {},
                yy: {},
                symbols_: {
                    error: 2,
                    root: 3,
                    program: 4,
                    EOF: 5,
                    simpleInverse: 6,
                    statements: 7,
                    statement: 8,
                    openInverse: 9,
                    closeBlock: 10,
                    openBlock: 11,
                    mustache: 12,
                    partial: 13,
                    CONTENT: 14,
                    COMMENT: 15,
                    OPEN_BLOCK: 16,
                    inMustache: 17,
                    CLOSE: 18,
                    OPEN_INVERSE: 19,
                    OPEN_ENDBLOCK: 20,
                    path: 21,
                    OPEN: 22,
                    OPEN_UNESCAPED: 23,
                    CLOSE_UNESCAPED: 24,
                    OPEN_PARTIAL: 25,
                    partialName: 26,
                    params: 27,
                    hash: 28,
                    dataName: 29,
                    param: 30,
                    STRING: 31,
                    INTEGER: 32,
                    BOOLEAN: 33,
                    hashSegments: 34,
                    hashSegment: 35,
                    ID: 36,
                    EQUALS: 37,
                    DATA: 38,
                    pathSegments: 39,
                    SEP: 40,
                    $accept: 0,
                    $end: 1
                },
                terminals_: {
                    2 : "error",
                    5 : "EOF",
                    14 : "CONTENT",
                    15 : "COMMENT",
                    16 : "OPEN_BLOCK",
                    18 : "CLOSE",
                    19 : "OPEN_INVERSE",
                    20 : "OPEN_ENDBLOCK",
                    22 : "OPEN",
                    23 : "OPEN_UNESCAPED",
                    24 : "CLOSE_UNESCAPED",
                    25 : "OPEN_PARTIAL",
                    31 : "STRING",
                    32 : "INTEGER",
                    33 : "BOOLEAN",
                    36 : "ID",
                    37 : "EQUALS",
                    38 : "DATA",
                    40 : "SEP"
                },
                productions_: [0, [3, 2], [4, 2], [4, 3], [4, 2], [4, 1], [4, 1], [4, 0], [7, 1], [7, 2], [8, 3], [8, 3], [8, 1], [8, 1], [8, 1], [8, 1], [11, 3], [9, 3], [10, 3], [12, 3], [12, 3], [13, 3], [13, 4], [6, 2], [17, 3], [17, 2], [17, 2], [17, 1], [17, 1], [27, 2], [27, 1], [30, 1], [30, 1], [30, 1], [30, 1], [30, 1], [28, 1], [34, 2], [34, 1], [35, 3], [35, 3], [35, 3], [35, 3], [35, 3], [26, 1], [26, 1], [26, 1], [29, 2], [21, 1], [39, 3], [39, 1]],
                performAction: function(a, b, c, d, e, f, g) {
                    var h = f.length - 1;
                    switch (e) {
                    case 1:
                        return f[h - 1];
                    case 2:
                        this.$ = new d.ProgramNode([], f[h]);
                        break;
                    case 3:
                        this.$ = new d.ProgramNode(f[h - 2], f[h]);
                        break;
                    case 4:
                        this.$ = new d.ProgramNode(f[h - 1], []);
                        break;
                    case 5:
                        this.$ = new d.ProgramNode(f[h]);
                        break;
                    case 6:
                        this.$ = new d.ProgramNode([], []);
                        break;
                    case 7:
                        this.$ = new d.ProgramNode([]);
                        break;
                    case 8:
                        this.$ = [f[h]];
                        break;
                    case 9:
                        f[h - 1].push(f[h]),
                        this.$ = f[h - 1];
                        break;
                    case 10:
                        this.$ = new d.BlockNode(f[h - 2], f[h - 1].inverse, f[h - 1], f[h]);
                        break;
                    case 11:
                        this.$ = new d.BlockNode(f[h - 2], f[h - 1], f[h - 1].inverse, f[h]);
                        break;
                    case 12:
                        this.$ = f[h];
                        break;
                    case 13:
                        this.$ = f[h];
                        break;
                    case 14:
                        this.$ = new d.ContentNode(f[h]);
                        break;
                    case 15:
                        this.$ = new d.CommentNode(f[h]);
                        break;
                    case 16:
                        this.$ = new d.MustacheNode(f[h - 1][0], f[h - 1][1]);
                        break;
                    case 17:
                        this.$ = new d.MustacheNode(f[h - 1][0], f[h - 1][1]);
                        break;
                    case 18:
                        this.$ = f[h - 1];
                        break;
                    case 19:
                        this.$ = new d.MustacheNode(f[h - 1][0], f[h - 1][1], "&" === f[h - 2][2]);
                        break;
                    case 20:
                        this.$ = new d.MustacheNode(f[h - 1][0], f[h - 1][1], !0);
                        break;
                    case 21:
                        this.$ = new d.PartialNode(f[h - 1]);
                        break;
                    case 22:
                        this.$ = new d.PartialNode(f[h - 2], f[h - 1]);
                        break;
                    case 23:
                        break;
                    case 24:
                        this.$ = [[f[h - 2]].concat(f[h - 1]), f[h]];
                        break;
                    case 25:
                        this.$ = [[f[h - 1]].concat(f[h]), null];
                        break;
                    case 26:
                        this.$ = [[f[h - 1]], f[h]];
                        break;
                    case 27:
                        this.$ = [[f[h]], null];
                        break;
                    case 28:
                        this.$ = [[f[h]], null];
                        break;
                    case 29:
                        f[h - 1].push(f[h]),
                        this.$ = f[h - 1];
                        break;
                    case 30:
                        this.$ = [f[h]];
                        break;
                    case 31:
                        this.$ = f[h];
                        break;
                    case 32:
                        this.$ = new d.StringNode(f[h]);
                        break;
                    case 33:
                        this.$ = new d.IntegerNode(f[h]);
                        break;
                    case 34:
                        this.$ = new d.BooleanNode(f[h]);
                        break;
                    case 35:
                        this.$ = f[h];
                        break;
                    case 36:
                        this.$ = new d.HashNode(f[h]);
                        break;
                    case 37:
                        f[h - 1].push(f[h]),
                        this.$ = f[h - 1];
                        break;
                    case 38:
                        this.$ = [f[h]];
                        break;
                    case 39:
                        this.$ = [f[h - 2], f[h]];
                        break;
                    case 40:
                        this.$ = [f[h - 2], new d.StringNode(f[h])];
                        break;
                    case 41:
                        this.$ = [f[h - 2], new d.IntegerNode(f[h])];
                        break;
                    case 42:
                        this.$ = [f[h - 2], new d.BooleanNode(f[h])];
                        break;
                    case 43:
                        this.$ = [f[h - 2], f[h]];
                        break;
                    case 44:
                        this.$ = new d.PartialNameNode(f[h]);
                        break;
                    case 45:
                        this.$ = new d.PartialNameNode(new d.StringNode(f[h]));
                        break;
                    case 46:
                        this.$ = new d.PartialNameNode(new d.IntegerNode(f[h]));
                        break;
                    case 47:
                        this.$ = new d.DataNode(f[h]);
                        break;
                    case 48:
                        this.$ = new d.IdNode(f[h]);
                        break;
                    case 49:
                        f[h - 2].push({
                            part: f[h],
                            separator: f[h - 1]
                        }),
                        this.$ = f[h - 2];
                        break;
                    case 50:
                        this.$ = [{
                            part: f[h]
                        }]
                    }
                },
                table: [{
                    3 : 1,
                    4 : 2,
                    5 : [2, 7],
                    6 : 3,
                    7 : 4,
                    8 : 6,
                    9 : 7,
                    11 : 8,
                    12 : 9,
                    13 : 10,
                    14 : [1, 11],
                    15 : [1, 12],
                    16 : [1, 13],
                    19 : [1, 5],
                    22 : [1, 14],
                    23 : [1, 15],
                    25 : [1, 16]
                },
                {
                    1 : [3]
                },
                {
                    5 : [1, 17]
                },
                {
                    5 : [2, 6],
                    7 : 18,
                    8 : 6,
                    9 : 7,
                    11 : 8,
                    12 : 9,
                    13 : 10,
                    14 : [1, 11],
                    15 : [1, 12],
                    16 : [1, 13],
                    19 : [1, 19],
                    20 : [2, 6],
                    22 : [1, 14],
                    23 : [1, 15],
                    25 : [1, 16]
                },
                {
                    5 : [2, 5],
                    6 : 20,
                    8 : 21,
                    9 : 7,
                    11 : 8,
                    12 : 9,
                    13 : 10,
                    14 : [1, 11],
                    15 : [1, 12],
                    16 : [1, 13],
                    19 : [1, 5],
                    20 : [2, 5],
                    22 : [1, 14],
                    23 : [1, 15],
                    25 : [1, 16]
                },
                {
                    17 : 23,
                    18 : [1, 22],
                    21 : 24,
                    29 : 25,
                    36 : [1, 28],
                    38 : [1, 27],
                    39 : 26
                },
                {
                    5 : [2, 8],
                    14 : [2, 8],
                    15 : [2, 8],
                    16 : [2, 8],
                    19 : [2, 8],
                    20 : [2, 8],
                    22 : [2, 8],
                    23 : [2, 8],
                    25 : [2, 8]
                },
                {
                    4 : 29,
                    6 : 3,
                    7 : 4,
                    8 : 6,
                    9 : 7,
                    11 : 8,
                    12 : 9,
                    13 : 10,
                    14 : [1, 11],
                    15 : [1, 12],
                    16 : [1, 13],
                    19 : [1, 5],
                    20 : [2, 7],
                    22 : [1, 14],
                    23 : [1, 15],
                    25 : [1, 16]
                },
                {
                    4 : 30,
                    6 : 3,
                    7 : 4,
                    8 : 6,
                    9 : 7,
                    11 : 8,
                    12 : 9,
                    13 : 10,
                    14 : [1, 11],
                    15 : [1, 12],
                    16 : [1, 13],
                    19 : [1, 5],
                    20 : [2, 7],
                    22 : [1, 14],
                    23 : [1, 15],
                    25 : [1, 16]
                },
                {
                    5 : [2, 12],
                    14 : [2, 12],
                    15 : [2, 12],
                    16 : [2, 12],
                    19 : [2, 12],
                    20 : [2, 12],
                    22 : [2, 12],
                    23 : [2, 12],
                    25 : [2, 12]
                },
                {
                    5 : [2, 13],
                    14 : [2, 13],
                    15 : [2, 13],
                    16 : [2, 13],
                    19 : [2, 13],
                    20 : [2, 13],
                    22 : [2, 13],
                    23 : [2, 13],
                    25 : [2, 13]
                },
                {
                    5 : [2, 14],
                    14 : [2, 14],
                    15 : [2, 14],
                    16 : [2, 14],
                    19 : [2, 14],
                    20 : [2, 14],
                    22 : [2, 14],
                    23 : [2, 14],
                    25 : [2, 14]
                },
                {
                    5 : [2, 15],
                    14 : [2, 15],
                    15 : [2, 15],
                    16 : [2, 15],
                    19 : [2, 15],
                    20 : [2, 15],
                    22 : [2, 15],
                    23 : [2, 15],
                    25 : [2, 15]
                },
                {
                    17 : 31,
                    21 : 24,
                    29 : 25,
                    36 : [1, 28],
                    38 : [1, 27],
                    39 : 26
                },
                {
                    17 : 32,
                    21 : 24,
                    29 : 25,
                    36 : [1, 28],
                    38 : [1, 27],
                    39 : 26
                },
                {
                    17 : 33,
                    21 : 24,
                    29 : 25,
                    36 : [1, 28],
                    38 : [1, 27],
                    39 : 26
                },
                {
                    21 : 35,
                    26 : 34,
                    31 : [1, 36],
                    32 : [1, 37],
                    36 : [1, 28],
                    39 : 26
                },
                {
                    1 : [2, 1]
                },
                {
                    5 : [2, 2],
                    8 : 21,
                    9 : 7,
                    11 : 8,
                    12 : 9,
                    13 : 10,
                    14 : [1, 11],
                    15 : [1, 12],
                    16 : [1, 13],
                    19 : [1, 19],
                    20 : [2, 2],
                    22 : [1, 14],
                    23 : [1, 15],
                    25 : [1, 16]
                },
                {
                    17 : 23,
                    21 : 24,
                    29 : 25,
                    36 : [1, 28],
                    38 : [1, 27],
                    39 : 26
                },
                {
                    5 : [2, 4],
                    7 : 38,
                    8 : 6,
                    9 : 7,
                    11 : 8,
                    12 : 9,
                    13 : 10,
                    14 : [1, 11],
                    15 : [1, 12],
                    16 : [1, 13],
                    19 : [1, 19],
                    20 : [2, 4],
                    22 : [1, 14],
                    23 : [1, 15],
                    25 : [1, 16]
                },
                {
                    5 : [2, 9],
                    14 : [2, 9],
                    15 : [2, 9],
                    16 : [2, 9],
                    19 : [2, 9],
                    20 : [2, 9],
                    22 : [2, 9],
                    23 : [2, 9],
                    25 : [2, 9]
                },
                {
                    5 : [2, 23],
                    14 : [2, 23],
                    15 : [2, 23],
                    16 : [2, 23],
                    19 : [2, 23],
                    20 : [2, 23],
                    22 : [2, 23],
                    23 : [2, 23],
                    25 : [2, 23]
                },
                {
                    18 : [1, 39]
                },
                {
                    18 : [2, 27],
                    21 : 44,
                    24 : [2, 27],
                    27 : 40,
                    28 : 41,
                    29 : 48,
                    30 : 42,
                    31 : [1, 45],
                    32 : [1, 46],
                    33 : [1, 47],
                    34 : 43,
                    35 : 49,
                    36 : [1, 50],
                    38 : [1, 27],
                    39 : 26
                },
                {
                    18 : [2, 28],
                    24 : [2, 28]
                },
                {
                    18 : [2, 48],
                    24 : [2, 48],
                    31 : [2, 48],
                    32 : [2, 48],
                    33 : [2, 48],
                    36 : [2, 48],
                    38 : [2, 48],
                    40 : [1, 51]
                },
                {
                    21 : 52,
                    36 : [1, 28],
                    39 : 26
                },
                {
                    18 : [2, 50],
                    24 : [2, 50],
                    31 : [2, 50],
                    32 : [2, 50],
                    33 : [2, 50],
                    36 : [2, 50],
                    38 : [2, 50],
                    40 : [2, 50]
                },
                {
                    10 : 53,
                    20 : [1, 54]
                },
                {
                    10 : 55,
                    20 : [1, 54]
                },
                {
                    18 : [1, 56]
                },
                {
                    18 : [1, 57]
                },
                {
                    24 : [1, 58]
                },
                {
                    18 : [1, 59],
                    21 : 60,
                    36 : [1, 28],
                    39 : 26
                },
                {
                    18 : [2, 44],
                    36 : [2, 44]
                },
                {
                    18 : [2, 45],
                    36 : [2, 45]
                },
                {
                    18 : [2, 46],
                    36 : [2, 46]
                },
                {
                    5 : [2, 3],
                    8 : 21,
                    9 : 7,
                    11 : 8,
                    12 : 9,
                    13 : 10,
                    14 : [1, 11],
                    15 : [1, 12],
                    16 : [1, 13],
                    19 : [1, 19],
                    20 : [2, 3],
                    22 : [1, 14],
                    23 : [1, 15],
                    25 : [1, 16]
                },
                {
                    14 : [2, 17],
                    15 : [2, 17],
                    16 : [2, 17],
                    19 : [2, 17],
                    20 : [2, 17],
                    22 : [2, 17],
                    23 : [2, 17],
                    25 : [2, 17]
                },
                {
                    18 : [2, 25],
                    21 : 44,
                    24 : [2, 25],
                    28 : 61,
                    29 : 48,
                    30 : 62,
                    31 : [1, 45],
                    32 : [1, 46],
                    33 : [1, 47],
                    34 : 43,
                    35 : 49,
                    36 : [1, 50],
                    38 : [1, 27],
                    39 : 26
                },
                {
                    18 : [2, 26],
                    24 : [2, 26]
                },
                {
                    18 : [2, 30],
                    24 : [2, 30],
                    31 : [2, 30],
                    32 : [2, 30],
                    33 : [2, 30],
                    36 : [2, 30],
                    38 : [2, 30]
                },
                {
                    18 : [2, 36],
                    24 : [2, 36],
                    35 : 63,
                    36 : [1, 64]
                },
                {
                    18 : [2, 31],
                    24 : [2, 31],
                    31 : [2, 31],
                    32 : [2, 31],
                    33 : [2, 31],
                    36 : [2, 31],
                    38 : [2, 31]
                },
                {
                    18 : [2, 32],
                    24 : [2, 32],
                    31 : [2, 32],
                    32 : [2, 32],
                    33 : [2, 32],
                    36 : [2, 32],
                    38 : [2, 32]
                },
                {
                    18 : [2, 33],
                    24 : [2, 33],
                    31 : [2, 33],
                    32 : [2, 33],
                    33 : [2, 33],
                    36 : [2, 33],
                    38 : [2, 33]
                },
                {
                    18 : [2, 34],
                    24 : [2, 34],
                    31 : [2, 34],
                    32 : [2, 34],
                    33 : [2, 34],
                    36 : [2, 34],
                    38 : [2, 34]
                },
                {
                    18 : [2, 35],
                    24 : [2, 35],
                    31 : [2, 35],
                    32 : [2, 35],
                    33 : [2, 35],
                    36 : [2, 35],
                    38 : [2, 35]
                },
                {
                    18 : [2, 38],
                    24 : [2, 38],
                    36 : [2, 38]
                },
                {
                    18 : [2, 50],
                    24 : [2, 50],
                    31 : [2, 50],
                    32 : [2, 50],
                    33 : [2, 50],
                    36 : [2, 50],
                    37 : [1, 65],
                    38 : [2, 50],
                    40 : [2, 50]
                },
                {
                    36 : [1, 66]
                },
                {
                    18 : [2, 47],
                    24 : [2, 47],
                    31 : [2, 47],
                    32 : [2, 47],
                    33 : [2, 47],
                    36 : [2, 47],
                    38 : [2, 47]
                },
                {
                    5 : [2, 10],
                    14 : [2, 10],
                    15 : [2, 10],
                    16 : [2, 10],
                    19 : [2, 10],
                    20 : [2, 10],
                    22 : [2, 10],
                    23 : [2, 10],
                    25 : [2, 10]
                },
                {
                    21 : 67,
                    36 : [1, 28],
                    39 : 26
                },
                {
                    5 : [2, 11],
                    14 : [2, 11],
                    15 : [2, 11],
                    16 : [2, 11],
                    19 : [2, 11],
                    20 : [2, 11],
                    22 : [2, 11],
                    23 : [2, 11],
                    25 : [2, 11]
                },
                {
                    14 : [2, 16],
                    15 : [2, 16],
                    16 : [2, 16],
                    19 : [2, 16],
                    20 : [2, 16],
                    22 : [2, 16],
                    23 : [2, 16],
                    25 : [2, 16]
                },
                {
                    5 : [2, 19],
                    14 : [2, 19],
                    15 : [2, 19],
                    16 : [2, 19],
                    19 : [2, 19],
                    20 : [2, 19],
                    22 : [2, 19],
                    23 : [2, 19],
                    25 : [2, 19]
                },
                {
                    5 : [2, 20],
                    14 : [2, 20],
                    15 : [2, 20],
                    16 : [2, 20],
                    19 : [2, 20],
                    20 : [2, 20],
                    22 : [2, 20],
                    23 : [2, 20],
                    25 : [2, 20]
                },
                {
                    5 : [2, 21],
                    14 : [2, 21],
                    15 : [2, 21],
                    16 : [2, 21],
                    19 : [2, 21],
                    20 : [2, 21],
                    22 : [2, 21],
                    23 : [2, 21],
                    25 : [2, 21]
                },
                {
                    18 : [1, 68]
                },
                {
                    18 : [2, 24],
                    24 : [2, 24]
                },
                {
                    18 : [2, 29],
                    24 : [2, 29],
                    31 : [2, 29],
                    32 : [2, 29],
                    33 : [2, 29],
                    36 : [2, 29],
                    38 : [2, 29]
                },
                {
                    18 : [2, 37],
                    24 : [2, 37],
                    36 : [2, 37]
                },
                {
                    37 : [1, 65]
                },
                {
                    21 : 69,
                    29 : 73,
                    31 : [1, 70],
                    32 : [1, 71],
                    33 : [1, 72],
                    36 : [1, 28],
                    38 : [1, 27],
                    39 : 26
                },
                {
                    18 : [2, 49],
                    24 : [2, 49],
                    31 : [2, 49],
                    32 : [2, 49],
                    33 : [2, 49],
                    36 : [2, 49],
                    38 : [2, 49],
                    40 : [2, 49]
                },
                {
                    18 : [1, 74]
                },
                {
                    5 : [2, 22],
                    14 : [2, 22],
                    15 : [2, 22],
                    16 : [2, 22],
                    19 : [2, 22],
                    20 : [2, 22],
                    22 : [2, 22],
                    23 : [2, 22],
                    25 : [2, 22]
                },
                {
                    18 : [2, 39],
                    24 : [2, 39],
                    36 : [2, 39]
                },
                {
                    18 : [2, 40],
                    24 : [2, 40],
                    36 : [2, 40]
                },
                {
                    18 : [2, 41],
                    24 : [2, 41],
                    36 : [2, 41]
                },
                {
                    18 : [2, 42],
                    24 : [2, 42],
                    36 : [2, 42]
                },
                {
                    18 : [2, 43],
                    24 : [2, 43],
                    36 : [2, 43]
                },
                {
                    5 : [2, 18],
                    14 : [2, 18],
                    15 : [2, 18],
                    16 : [2, 18],
                    19 : [2, 18],
                    20 : [2, 18],
                    22 : [2, 18],
                    23 : [2, 18],
                    25 : [2, 18]
                }],
                defaultActions: {
                    17 : [2, 1]
                },
                parseError: function(a, b) {
                    throw new Error(a)
                },
                parse: function(a) {
                    function b() {
                        var a;
                        return a = c.lexer.lex() || 1,
                        "number" != typeof a && (a = c.symbols_[a] || a),
                        a
                    }
                    var c = this,
                    d = [0],
                    e = [null],
                    f = [],
                    g = this.table,
                    h = "",
                    i = 0,
                    j = 0,
                    k = 0;
                    this.lexer.setInput(a),
                    this.lexer.yy = this.yy,
                    this.yy.lexer = this.lexer,
                    this.yy.parser = this,
                    "undefined" == typeof this.lexer.yylloc && (this.lexer.yylloc = {});
                    var l = this.lexer.yylloc;
                    f.push(l);
                    var m = this.lexer.options && this.lexer.options.ranges;
                    "function" == typeof this.yy.parseError && (this.parseError = this.yy.parseError);
                    for (var n, o, p, q, r, s, t, u, v, w = {};;) {
                        if (p = d[d.length - 1], this.defaultActions[p] ? q = this.defaultActions[p] : ((null === n || "undefined" == typeof n) && (n = b()), q = g[p] && g[p][n]), "undefined" == typeof q || !q.length || !q[0]) {
                            var x = "";
                            if (!k) {
                                v = [];
                                for (s in g[p]) this.terminals_[s] && s > 2 && v.push("'" + this.terminals_[s] + "'");
                                x = this.lexer.showPosition ? "Parse error on line " + (i + 1) + ":\n" + this.lexer.showPosition() + "\nExpecting " + v.join(", ") + ", got '" + (this.terminals_[n] || n) + "'": "Parse error on line " + (i + 1) + ": Unexpected " + (1 == n ? "end of input": "'" + (this.terminals_[n] || n) + "'"),
                                this.parseError(x, {
                                    text: this.lexer.match,
                                    token: this.terminals_[n] || n,
                                    line: this.lexer.yylineno,
                                    loc: l,
                                    expected: v
                                })
                            }
                        }
                        if (q[0] instanceof Array && q.length > 1) throw new Error("Parse Error: multiple actions possible at state: " + p + ", token: " + n);
                        switch (q[0]) {
                        case 1:
                            d.push(n),
                            e.push(this.lexer.yytext),
                            f.push(this.lexer.yylloc),
                            d.push(q[1]),
                            n = null,
                            o ? (n = o, o = null) : (j = this.lexer.yyleng, h = this.lexer.yytext, i = this.lexer.yylineno, l = this.lexer.yylloc, k > 0 && k--);
                            break;
                        case 2:
                            if (t = this.productions_[q[1]][1], w.$ = e[e.length - t], w._$ = {
                                first_line: f[f.length - (t || 1)].first_line,
                                last_line: f[f.length - 1].last_line,
                                first_column: f[f.length - (t || 1)].first_column,
                                last_column: f[f.length - 1].last_column
                            },
                            m && (w._$.range = [f[f.length - (t || 1)].range[0], f[f.length - 1].range[1]]), r = this.performAction.call(w, h, j, i, this.yy, q[1], e, f), "undefined" != typeof r) return r;
                            t && (d = d.slice(0, -1 * t * 2), e = e.slice(0, -1 * t), f = f.slice(0, -1 * t)),
                            d.push(this.productions_[q[1]][0]),
                            e.push(w.$),
                            f.push(w._$),
                            u = g[d[d.length - 2]][d[d.length - 1]],
                            d.push(u);
                            break;
                        case 3:
                            return ! 0
                        }
                    }
                    return ! 0
                }
            },
            c = function() {
                var a = {
                    EOF: 1,
                    parseError: function(a, b) {
                        if (!this.yy.parser) throw new Error(a);
                        this.yy.parser.parseError(a, b)
                    },
                    setInput: function(a) {
                        return this._input = a,
                        this._more = this._less = this.done = !1,
                        this.yylineno = this.yyleng = 0,
                        this.yytext = this.matched = this.match = "",
                        this.conditionStack = ["INITIAL"],
                        this.yylloc = {
                            first_line: 1,
                            first_column: 0,
                            last_line: 1,
                            last_column: 0
                        },
                        this.options.ranges && (this.yylloc.range = [0, 0]),
                        this.offset = 0,
                        this
                    },
                    input: function() {
                        var a = this._input[0];
                        this.yytext += a,
                        this.yyleng++,
                        this.offset++,
                        this.match += a,
                        this.matched += a;
                        var b = a.match(/(?:\r\n?|\n).*/g);
                        return b ? (this.yylineno++, this.yylloc.last_line++) : this.yylloc.last_column++,
                        this.options.ranges && this.yylloc.range[1]++,
                        this._input = this._input.slice(1),
                        a
                    },
                    unput: function(a) {
                        var b = a.length,
                        c = a.split(/(?:\r\n?|\n)/g);
                        this._input = a + this._input,
                        this.yytext = this.yytext.substr(0, this.yytext.length - b - 1),
                        this.offset -= b;
                        var d = this.match.split(/(?:\r\n?|\n)/g);
                        this.match = this.match.substr(0, this.match.length - 1),
                        this.matched = this.matched.substr(0, this.matched.length - 1),
                        c.length - 1 && (this.yylineno -= c.length - 1);
                        var e = this.yylloc.range;
                        return this.yylloc = {
                            first_line: this.yylloc.first_line,
                            last_line: this.yylineno + 1,
                            first_column: this.yylloc.first_column,
                            last_column: c ? (c.length === d.length ? this.yylloc.first_column: 0) + d[d.length - c.length].length - c[0].length: this.yylloc.first_column - b
                        },
                        this.options.ranges && (this.yylloc.range = [e[0], e[0] + this.yyleng - b]),
                        this
                    },
                    more: function() {
                        return this._more = !0,
                        this
                    },
                    less: function(a) {
                        this.unput(this.match.slice(a))
                    },
                    pastInput: function() {
                        var a = this.matched.substr(0, this.matched.length - this.match.length);
                        return (a.length > 20 ? "...": "") + a.substr( - 20).replace(/\n/g, "")
                    },
                    upcomingInput: function() {
                        var a = this.match;
                        return a.length < 20 && (a += this._input.substr(0, 20 - a.length)),
                        (a.substr(0, 20) + (a.length > 20 ? "...": "")).replace(/\n/g, "")
                    },
                    showPosition: function() {
                        var a = this.pastInput(),
                        b = new Array(a.length + 1).join("-");
                        return a + this.upcomingInput() + "\n" + b + "^"
                    },
                    next: function() {
                        if (this.done) return this.EOF;
                        this._input || (this.done = !0);
                        var a, b, c, d, e;
                        this._more || (this.yytext = "", this.match = "");
                        for (var f = this._currentRules(), g = 0; g < f.length && (c = this._input.match(this.rules[f[g]]), !c || b && !(c[0].length > b[0].length) || (b = c, d = g, this.options.flex)); g++);
                        return b ? (e = b[0].match(/(?:\r\n?|\n).*/g), e && (this.yylineno += e.length), this.yylloc = {
                            first_line: this.yylloc.last_line,
                            last_line: this.yylineno + 1,
                            first_column: this.yylloc.last_column,
                            last_column: e ? e[e.length - 1].length - e[e.length - 1].match(/\r?\n?/)[0].length: this.yylloc.last_column + b[0].length
                        },
                        this.yytext += b[0], this.match += b[0], this.matches = b, this.yyleng = this.yytext.length, this.options.ranges && (this.yylloc.range = [this.offset, this.offset += this.yyleng]), this._more = !1, this._input = this._input.slice(b[0].length), this.matched += b[0], a = this.performAction.call(this, this.yy, this, f[d], this.conditionStack[this.conditionStack.length - 1]), this.done && this._input && (this.done = !1), a ? a: void 0) : "" === this._input ? this.EOF: this.parseError("Lexical error on line " + (this.yylineno + 1) + ". Unrecognized text.\n" + this.showPosition(), {
                            text: "",
                            token: null,
                            line: this.yylineno
                        })
                    },
                    lex: function() {
                        var a = this.next();
                        return "undefined" != typeof a ? a: this.lex()
                    },
                    begin: function(a) {
                        this.conditionStack.push(a)
                    },
                    popState: function() {
                        return this.conditionStack.pop()
                    },
                    _currentRules: function() {
                        return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules
                    },
                    topState: function() {
                        return this.conditionStack[this.conditionStack.length - 2]
                    },
                    pushState: function(a) {
                        this.begin(a)
                    }
                };
                return a.options = {},
                a.performAction = function(a, b, c, d) {
                    switch (c) {
                    case 0:
                        return b.yytext = "\\",
                        14;
                    case 1:
                        if ("\\" !== b.yytext.slice( - 1) && this.begin("mu"), "\\" === b.yytext.slice( - 1) && (b.yytext = b.yytext.substr(0, b.yyleng - 1), this.begin("emu")), b.yytext) return 14;
                        break;
                    case 2:
                        return 14;
                    case 3:
                        return "\\" !== b.yytext.slice( - 1) && this.popState(),
                        "\\" === b.yytext.slice( - 1) && (b.yytext = b.yytext.substr(0, b.yyleng - 1)),
                        14;
                    case 4:
                        return b.yytext = b.yytext.substr(0, b.yyleng - 4),
                        this.popState(),
                        15;
                    case 5:
                        return 25;
                    case 6:
                        return 16;
                    case 7:
                        return 20;
                    case 8:
                        return 19;
                    case 9:
                        return 19;
                    case 10:
                        return 23;
                    case 11:
                        return 22;
                    case 12:
                        this.popState(),
                        this.begin("com");
                        break;
                    case 13:
                        return b.yytext = b.yytext.substr(3, b.yyleng - 5),
                        this.popState(),
                        15;
                    case 14:
                        return 22;
                    case 15:
                        return 37;
                    case 16:
                        return 36;
                    case 17:
                        return 36;
                    case 18:
                        return 40;
                    case 19:
                        break;
                    case 20:
                        return this.popState(),
                        24;
                    case 21:
                        return this.popState(),
                        18;
                    case 22:
                        return b.yytext = b.yytext.substr(1, b.yyleng - 2).replace(/\\"/g, '"'),
                        31;
                    case 23:
                        return b.yytext = b.yytext.substr(1, b.yyleng - 2).replace(/\\'/g, "'"),
                        31;
                    case 24:
                        return 38;
                    case 25:
                        return 33;
                    case 26:
                        return 33;
                    case 27:
                        return 32;
                    case 28:
                        return 36;
                    case 29:
                        return b.yytext = b.yytext.substr(1, b.yyleng - 2),
                        36;
                    case 30:
                        return "INVALID";
                    case 31:
                        return 5
                    }
                },
                a.rules = [/^(?:\\\\(?=(\{\{)))/, /^(?:[^\x00]*?(?=(\{\{)))/, /^(?:[^\x00]+)/, /^(?:[^\x00]{2,}?(?=(\{\{|$)))/, /^(?:[\s\S]*?--\}\})/, /^(?:\{\{>)/, /^(?:\{\{#)/, /^(?:\{\{\/)/, /^(?:\{\{\^)/, /^(?:\{\{\s*else\b)/, /^(?:\{\{\{)/, /^(?:\{\{&)/, /^(?:\{\{!--)/, /^(?:\{\{![\s\S]*?\}\})/, /^(?:\{\{)/, /^(?:=)/, /^(?:\.(?=[}\/ ]))/, /^(?:\.\.)/, /^(?:[\/.])/, /^(?:\s+)/, /^(?:\}\}\})/, /^(?:\}\})/, /^(?:"(\\["]|[^"])*")/, /^(?:'(\\[']|[^'])*')/, /^(?:@)/, /^(?:true(?=[}\s]))/, /^(?:false(?=[}\s]))/, /^(?:-?[0-9]+(?=[}\s]))/, /^(?:[^\s!"#%-,\.\/;->@\[-\^`\{-~]+(?=[=}\s\/.]))/, /^(?:\[[^\]]*\])/, /^(?:.)/, /^(?:$)/],
                a.conditions = {
                    mu: {
                        rules: [5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31],
                        inclusive: !1
                    },
                    emu: {
                        rules: [3],
                        inclusive: !1
                    },
                    com: {
                        rules: [4],
                        inclusive: !1
                    },
                    INITIAL: {
                        rules: [0, 1, 2, 31],
                        inclusive: !0
                    }
                },
                a
            } ();
            return b.lexer = c,
            a.prototype = b,
            b.Parser = a,
            new a
        } ();
        a.Parser = f,
        a.parse = function(b) {
            return b.constructor === a.AST.ProgramNode ? b: (a.Parser.yy = a.AST, a.Parser.parse(b))
        },
        a.AST = {},
        a.AST.ProgramNode = function(b, c) {
            this.type = "program",
            this.statements = b,
            c && (this.inverse = new a.AST.ProgramNode(c))
        },
        a.AST.MustacheNode = function(a, b, c) {
            this.type = "mustache",
            this.escaped = !c,
            this.hash = b;
            var d = this.id = a[0],
            e = this.params = a.slice(1),
            f = this.eligibleHelper = d.isSimple;
            this.isHelper = f && (e.length || b)
        },
        a.AST.PartialNode = function(a, b) {
            this.type = "partial",
            this.partialName = a,
            this.context = b
        },
        a.AST.BlockNode = function(b, c, d, e) {
            var f = function(b, c) {
                if (b.original !== c.original) throw new a.Exception(b.original + " doesn't match " + c.original)
            };
            f(b.id, e),
            this.type = "block",
            this.mustache = b,
            this.program = c,
            this.inverse = d,
            this.inverse && !this.program && (this.isInverse = !0)
        },
        a.AST.ContentNode = function(a) {
            this.type = "content",
            this.string = a
        },
        a.AST.HashNode = function(a) {
            this.type = "hash",
            this.pairs = a
        },
        a.AST.IdNode = function(b) {
            this.type = "ID";
            for (var c = "",
            d = [], e = 0, f = 0, g = b.length; g > f; f++) {
                var h = b[f].part;
                if (c += (b[f].separator || "") + h, ".." === h || "." === h || "this" === h) {
                    if (d.length > 0) throw new a.Exception("Invalid path: " + c);
                    ".." === h ? e++:this.isScoped = !0
                } else d.push(h)
            }
            this.original = c,
            this.parts = d,
            this.string = d.join("."),
            this.depth = e,
            this.isSimple = 1 === b.length && !this.isScoped && 0 === e,
            this.stringModeValue = this.string
        },
        a.AST.PartialNameNode = function(a) {
            this.type = "PARTIAL_NAME",
            this.name = a.original
        },
        a.AST.DataNode = function(a) {
            this.type = "DATA",
            this.id = a
        },
        a.AST.StringNode = function(a) {
            this.type = "STRING",
            this.original = this.string = this.stringModeValue = a
        },
        a.AST.IntegerNode = function(a) {
            this.type = "INTEGER",
            this.original = this.integer = a,
            this.stringModeValue = Number(a)
        },
        a.AST.BooleanNode = function(a) {
            this.type = "BOOLEAN",
            this.bool = a,
            this.stringModeValue = "true" === a
        },
        a.AST.CommentNode = function(a) {
            this.type = "comment",
            this.comment = a
        };
        var g = ["description", "fileName", "lineNumber", "message", "name", "number", "stack"];
        a.Exception = function(a) {
            for (var b = Error.prototype.constructor.apply(this, arguments), c = 0; c < g.length; c++) this[g[c]] = b[g[c]]
        },
        a.Exception.prototype = new Error,
        a.SafeString = function(a) {
            this.string = a
        },
        a.SafeString.prototype.toString = function() {
            return this.string.toString()
        };
        var h = {
            "&": "&amp;",
            "<": "&lt;",
            ">": "&gt;",
            '"': "&quot;",
            "'": "&#x27;",
            "`": "&#x60;"
        },
        i = /[&<>"'`]/g,
        j = /[&<>"'`]/,
        k = function(a) {
            return h[a] || "&amp;"
        };
        a.Utils = {
            extend: function(a, b) {
                for (var c in b) b.hasOwnProperty(c) && (a[c] = b[c])
            },
            escapeExpression: function(b) {
                return b instanceof a.SafeString ? b.toString() : null == b || b === !1 ? "": (b = b.toString(), j.test(b) ? b.replace(i, k) : b)
            },
            isEmpty: function(a) {
                return a || 0 === a ? "[object Array]" === c.call(a) && 0 === a.length ? !0 : !1 : !0
            }
        };
        var l = a.Compiler = function() {},
        m = a.JavaScriptCompiler = function() {};
        l.prototype = {
            compiler: l,
            disassemble: function() {
                for (var a, b, c, d = this.opcodes,
                e = [], f = 0, g = d.length; g > f; f++) if (a = d[f], "DECLARE" === a.opcode) e.push("DECLARE " + a.name + "=" + a.value);
                else {
                    b = [];
                    for (var h = 0; h < a.args.length; h++) c = a.args[h],
                    "string" == typeof c && (c = '"' + c.replace("\n", "\\n") + '"'),
                    b.push(c);
                    e.push(a.opcode + " " + b.join(" "))
                }
                return e.join("\n")
            },
            equals: function(a) {
                var b = this.opcodes.length;
                if (a.opcodes.length !== b) return ! 1;
                for (var c = 0; b > c; c++) {
                    var d = this.opcodes[c],
                    e = a.opcodes[c];
                    if (d.opcode !== e.opcode || d.args.length !== e.args.length) return ! 1;
                    for (var f = 0; f < d.args.length; f++) if (d.args[f] !== e.args[f]) return ! 1
                }
                if (b = this.children.length, a.children.length !== b) return ! 1;
                for (c = 0; b > c; c++) if (!this.children[c].equals(a.children[c])) return ! 1;
                return ! 0
            },
            guid: 0,
            compile: function(a, b) {
                this.children = [],
                this.depths = {
                    list: []
                },
                this.options = b;
                var c = this.options.knownHelpers;
                if (this.options.knownHelpers = {
                    helperMissing: !0,
                    blockHelperMissing: !0,
                    each: !0,
                    "if": !0,
                    unless: !0,
                    "with": !0,
                    log: !0
                },
                c) for (var d in c) this.options.knownHelpers[d] = c[d];
                return this.program(a)
            },
            accept: function(a) {
                return this[a.type](a)
            },
            program: function(a) {
                var b, c = a.statements;
                this.opcodes = [];
                for (var d = 0,
                e = c.length; e > d; d++) b = c[d],
                this[b.type](b);
                return this.isSimple = 1 === e,
                this.depths.list = this.depths.list.sort(function(a, b) {
                    return a - b
                }),
                this
            },
            compileProgram: function(a) {
                var b, c = (new this.compiler).compile(a, this.options),
                d = this.guid++;
                this.usePartial = this.usePartial || c.usePartial,
                this.children[d] = c;
                for (var e = 0,
                f = c.depths.list.length; f > e; e++) b = c.depths.list[e],
                2 > b || this.addDepth(b - 1);
                return d
            },
            block: function(a) {
                var b = a.mustache,
                c = a.program,
                d = a.inverse;
                c && (c = this.compileProgram(c)),
                d && (d = this.compileProgram(d));
                var e = this.classifyMustache(b);
                "helper" === e ? this.helperMustache(b, c, d) : "simple" === e ? (this.simpleMustache(b), this.opcode("pushProgram", c), this.opcode("pushProgram", d), this.opcode("emptyHash"), this.opcode("blockValue")) : (this.ambiguousMustache(b, c, d), this.opcode("pushProgram", c), this.opcode("pushProgram", d), this.opcode("emptyHash"), this.opcode("ambiguousBlockValue")),
                this.opcode("append")
            },
            hash: function(a) {
                var b, c, d = a.pairs;
                this.opcode("pushHash");
                for (var e = 0,
                f = d.length; f > e; e++) b = d[e],
                c = b[1],
                this.options.stringParams ? (c.depth && this.addDepth(c.depth), this.opcode("getContext", c.depth || 0), this.opcode("pushStringParam", c.stringModeValue, c.type)) : this.accept(c),
                this.opcode("assignToHash", b[0]);
                this.opcode("popHash")
            },
            partial: function(a) {
                var b = a.partialName;
                this.usePartial = !0,
                a.context ? this.ID(a.context) : this.opcode("push", "depth0"),
                this.opcode("invokePartial", b.name),
                this.opcode("append")
            },
            content: function(a) {
                this.opcode("appendContent", a.string)
            },
            mustache: function(a) {
                var b = this.options,
                c = this.classifyMustache(a);
                "simple" === c ? this.simpleMustache(a) : "helper" === c ? this.helperMustache(a) : this.ambiguousMustache(a),
                a.escaped && !b.noEscape ? this.opcode("appendEscaped") : this.opcode("append")
            },
            ambiguousMustache: function(a, b, c) {
                var d = a.id,
                e = d.parts[0],
                f = null != b || null != c;
                this.opcode("getContext", d.depth),
                this.opcode("pushProgram", b),
                this.opcode("pushProgram", c),
                this.opcode("invokeAmbiguous", e, f)
            },
            simpleMustache: function(a) {
                var b = a.id;
                "DATA" === b.type ? this.DATA(b) : b.parts.length ? this.ID(b) : (this.addDepth(b.depth), this.opcode("getContext", b.depth), this.opcode("pushContext")),
                this.opcode("resolvePossibleLambda")
            },
            helperMustache: function(a, b, c) {
                var d = this.setupFullMustacheParams(a, b, c),
                e = a.id.parts[0];
                if (this.options.knownHelpers[e]) this.opcode("invokeKnownHelper", d.length, e);
                else {
                    if (this.options.knownHelpersOnly) throw new Error("You specified knownHelpersOnly, but used the unknown helper " + e);
                    this.opcode("invokeHelper", d.length, e)
                }
            },
            ID: function(a) {
                this.addDepth(a.depth),
                this.opcode("getContext", a.depth);
                var b = a.parts[0];
                b ? this.opcode("lookupOnContext", a.parts[0]) : this.opcode("pushContext");
                for (var c = 1,
                d = a.parts.length; d > c; c++) this.opcode("lookup", a.parts[c])
            },
            DATA: function(b) {
                if (this.options.data = !0, b.id.isScoped || b.id.depth) throw new a.Exception("Scoped data references are not supported: " + b.original);
                this.opcode("lookupData");
                for (var c = b.id.parts,
                d = 0,
                e = c.length; e > d; d++) this.opcode("lookup", c[d])
            },
            STRING: function(a) {
                this.opcode("pushString", a.string)
            },
            INTEGER: function(a) {
                this.opcode("pushLiteral", a.integer)
            },
            BOOLEAN: function(a) {
                this.opcode("pushLiteral", a.bool)
            },
            comment: function() {},
            opcode: function(a) {
                this.opcodes.push({
                    opcode: a,
                    args: [].slice.call(arguments, 1)
                })
            },
            declare: function(a, b) {
                this.opcodes.push({
                    opcode: "DECLARE",
                    name: a,
                    value: b
                })
            },
            addDepth: function(a) {
                if (isNaN(a)) throw new Error("EWOT");
                0 !== a && (this.depths[a] || (this.depths[a] = !0, this.depths.list.push(a)))
            },
            classifyMustache: function(a) {
                var b = a.isHelper,
                c = a.eligibleHelper,
                d = this.options;
                if (c && !b) {
                    var e = a.id.parts[0];
                    d.knownHelpers[e] ? b = !0 : d.knownHelpersOnly && (c = !1)
                }
                return b ? "helper": c ? "ambiguous": "simple"
            },
            pushParams: function(a) {
                for (var b, c = a.length; c--;) b = a[c],
                this.options.stringParams ? (b.depth && this.addDepth(b.depth), this.opcode("getContext", b.depth || 0), this.opcode("pushStringParam", b.stringModeValue, b.type)) : this[b.type](b)
            },
            setupMustacheParams: function(a) {
                var b = a.params;
                return this.pushParams(b),
                a.hash ? this.hash(a.hash) : this.opcode("emptyHash"),
                b
            },
            setupFullMustacheParams: function(a, b, c) {
                var d = a.params;
                return this.pushParams(d),
                this.opcode("pushProgram", b),
                this.opcode("pushProgram", c),
                a.hash ? this.hash(a.hash) : this.opcode("emptyHash"),
                d
            }
        };
        var n = function(a) {
            this.value = a
        };
        m.prototype = {
            nameLookup: function(a, b) {
                return /^[0-9]+$/.test(b) ? a + "[" + b + "]": m.isValidJavaScriptVariableName(b) ? a + "." + b: a + "['" + b + "']"
            },
            appendToBuffer: function(a) {
                return this.environment.isSimple ? "return " + a + ";": {
                    appendToBuffer: !0,
                    content: a,
                    toString: function() {
                        return "buffer += " + a + ";"
                    }
                }
            },
            initializeBuffer: function() {
                return this.quotedString("")
            },
            namespace: "Handlebars",
            compile: function(b, c, d, e) {
                this.environment = b,
                this.options = c || {},
                a.log(a.logger.DEBUG, this.environment.disassemble() + "\n\n"),
                this.name = this.environment.name,
                this.isChild = !!d,
                this.context = d || {
                    programs: [],
                    environments: [],
                    aliases: {}
                },
                this.preamble(),
                this.stackSlot = 0,
                this.stackVars = [],
                this.registers = {
                    list: []
                },
                this.compileStack = [],
                this.inlineStack = [],
                this.compileChildren(b, c);
                var f, g = b.opcodes;
                for (this.i = 0, r = g.length; this.i < r; this.i++) f = g[this.i],
                "DECLARE" === f.opcode ? this[f.name] = f.value: this[f.opcode].apply(this, f.args);
                return this.createFunctionContext(e)
            },
            nextOpcode: function() {
                var a = this.environment.opcodes;
                return a[this.i + 1]
            },
            eat: function() {
                this.i = this.i + 1
            },
            preamble: function() {
                var a = [];
                if (this.isChild) a.push("");
                else {
                    var b = this.namespace,
                    c = "helpers = this.merge(helpers, " + b + ".helpers);";
                    this.environment.usePartial && (c = c + " partials = this.merge(partials, " + b + ".partials);"),
                    this.options.data && (c += " data = data || {};"),
                    a.push(c)
                }
                this.environment.isSimple ? a.push("") : a.push(", buffer = " + this.initializeBuffer()),
                this.lastContext = 0,
                this.source = a
            },
            createFunctionContext: function(b) {
                var c = this.stackVars.concat(this.registers.list);
                if (c.length > 0 && (this.source[1] = this.source[1] + ", " + c.join(", ")), !this.isChild) for (var d in this.context.aliases) this.context.aliases.hasOwnProperty(d) && (this.source[1] = this.source[1] + ", " + d + "=" + this.context.aliases[d]);
                this.source[1] && (this.source[1] = "var " + this.source[1].substring(2) + ";"),
                this.isChild || (this.source[1] += "\n" + this.context.programs.join("\n") + "\n"),
                this.environment.isSimple || this.source.push("return buffer;");
                for (var e = this.isChild ? ["depth0", "data"] : ["Handlebars", "depth0", "helpers", "partials", "data"], f = 0, g = this.environment.depths.list.length; g > f; f++) e.push("depth" + this.environment.depths.list[f]);
                var h = this.mergeSource();
                if (!this.isChild) {
                    var i = a.COMPILER_REVISION,
                    j = a.REVISION_CHANGES[i];
                    h = "this.compilerInfo = [" + i + ",'" + j + "'];\n" + h
                }
                if (b) return e.push(h),
                Function.apply(this, e);
                var k = "function " + (this.name || "") + "(" + e.join(",") + ") {\n  " + h + "}";
                return a.log(a.logger.DEBUG, k + "\n\n"),
                k
            },
            mergeSource: function() {
                for (var a, c = "",
                d = 0,
                e = this.source.length; e > d; d++) {
                    var f = this.source[d];
                    f.appendToBuffer ? a = a ? a + "\n    + " + f.content: f.content: (a && (c += "buffer += " + a + ";\n  ", a = b), c += f + "\n  ")
                }
                return c
            },
            blockValue: function() {
                this.context.aliases.blockHelperMissing = "helpers.blockHelperMissing";
                var a = ["depth0"];
                this.setupParams(0, a),
                this.replaceStack(function(b) {
                    return a.splice(1, 0, b),
                    "blockHelperMissing.call(" + a.join(", ") + ")"
                })
            },
            ambiguousBlockValue: function() {
                this.context.aliases.blockHelperMissing = "helpers.blockHelperMissing";
                var a = ["depth0"];
                this.setupParams(0, a);
                var b = this.topStack();
                a.splice(1, 0, b),
                a[a.length - 1] = "options",
                this.source.push("if (!" + this.lastHelper + ") { " + b + " = blockHelperMissing.call(" + a.join(", ") + "); }")
            },
            appendContent: function(a) {
                this.source.push(this.appendToBuffer(this.quotedString(a)))
            },
            append: function() {
                this.flushInline();
                var a = this.popStack();
                this.source.push("if(" + a + " || " + a + " === 0) { " + this.appendToBuffer(a) + " }"),
                this.environment.isSimple && this.source.push("else { " + this.appendToBuffer("''") + " }")
            },
            appendEscaped: function() {
                this.context.aliases.escapeExpression = "this.escapeExpression",
                this.source.push(this.appendToBuffer("escapeExpression(" + this.popStack() + ")"))
            },
            getContext: function(a) {
                this.lastContext !== a && (this.lastContext = a)
            },
            lookupOnContext: function(a) {
                this.push(this.nameLookup("depth" + this.lastContext, a, "context"))
            },
            pushContext: function() {
                this.pushStackLiteral("depth" + this.lastContext)
            },
            resolvePossibleLambda: function() {
                this.context.aliases.functionType = '"function"',
                this.replaceStack(function(a) {
                    return "typeof " + a + " === functionType ? " + a + ".apply(depth0) : " + a
                })
            },
            lookup: function(a) {
                this.replaceStack(function(b) {
                    return b + " == null || " + b + " === false ? " + b + " : " + this.nameLookup(b, a, "context")
                })
            },
            lookupData: function(a) {
                this.push("data")
            },
            pushStringParam: function(a, b) {
                this.pushStackLiteral("depth" + this.lastContext),
                this.pushString(b),
                "string" == typeof a ? this.pushString(a) : this.pushStackLiteral(a)
            },
            emptyHash: function() {
                this.pushStackLiteral("{}"),
                this.options.stringParams && (this.register("hashTypes", "{}"), this.register("hashContexts", "{}"))
            },
            pushHash: function() {
                this.hash = {
                    values: [],
                    types: [],
                    contexts: []
                }
            },
            popHash: function() {
                var a = this.hash;
                this.hash = b,
                this.options.stringParams && (this.register("hashContexts", "{" + a.contexts.join(",") + "}"), this.register("hashTypes", "{" + a.types.join(",") + "}")),
                this.push("{\n    " + a.values.join(",\n    ") + "\n  }")
            },
            pushString: function(a) {
                this.pushStackLiteral(this.quotedString(a))
            },
            push: function(a) {
                return this.inlineStack.push(a),
                a
            },
            pushLiteral: function(a) {
                this.pushStackLiteral(a)
            },
            pushProgram: function(a) {
                null != a ? this.pushStackLiteral(this.programExpression(a)) : this.pushStackLiteral(null)
            },
            invokeHelper: function(a, b) {
                this.context.aliases.helperMissing = "helpers.helperMissing";
                var c = this.lastHelper = this.setupHelper(a, b, !0),
                d = this.nameLookup("depth" + this.lastContext, b, "context");
                this.push(c.name + " || " + d),
                this.replaceStack(function(a) {
                    return a + " ? " + a + ".call(" + c.callParams + ") : helperMissing.call(" + c.helperMissingParams + ")"
                })
            },
            invokeKnownHelper: function(a, b) {
                var c = this.setupHelper(a, b);
                this.push(c.name + ".call(" + c.callParams + ")")
            },
            invokeAmbiguous: function(a, b) {
                this.context.aliases.functionType = '"function"',
                this.pushStackLiteral("{}");
                var c = this.setupHelper(0, a, b),
                d = this.lastHelper = this.nameLookup("helpers", a, "helper"),
                e = this.nameLookup("depth" + this.lastContext, a, "context"),
                f = this.nextStack();
                this.source.push("if (" + f + " = " + d + ") { " + f + " = " + f + ".call(" + c.callParams + "); }"),
                this.source.push("else { " + f + " = " + e + "; " + f + " = typeof " + f + " === functionType ? " + f + ".apply(depth0) : " + f + "; }")
            },
            invokePartial: function(a) {
                var b = [this.nameLookup("partials", a, "partial"), "'" + a + "'", this.popStack(), "helpers", "partials"];
                this.options.data && b.push("data"),
                this.context.aliases.self = "this",
                this.push("self.invokePartial(" + b.join(", ") + ")")
            },
            assignToHash: function(a) {
                var b, c, d = this.popStack();
                this.options.stringParams && (c = this.popStack(), b = this.popStack());
                var e = this.hash;
                b && e.contexts.push("'" + a + "': " + b),
                c && e.types.push("'" + a + "': " + c),
                e.values.push("'" + a + "': (" + d + ")")
            },
            compiler: m,
            compileChildren: function(a, b) {
                for (var c, d, e = a.children,
                f = 0,
                g = e.length; g > f; f++) {
                    c = e[f],
                    d = new this.compiler;
                    var h = this.matchExistingProgram(c);
                    null == h ? (this.context.programs.push(""), h = this.context.programs.length, c.index = h, c.name = "program" + h, this.context.programs[h] = d.compile(c, b, this.context), this.context.environments[h] = c) : (c.index = h, c.name = "program" + h)
                }
            },
            matchExistingProgram: function(a) {
                for (var b = 0,
                c = this.context.environments.length; c > b; b++) {
                    var d = this.context.environments[b];
                    if (d && d.equals(a)) return b
                }
            },
            programExpression: function(a) {
                if (this.context.aliases.self = "this", null == a) return "self.noop";
                for (var b, c = this.environment.children[a], d = c.depths.list, e = [c.index, c.name, "data"], f = 0, g = d.length; g > f; f++) b = d[f],
                1 === b ? e.push("depth0") : e.push("depth" + (b - 1));
                return (0 === d.length ? "self.program(": "self.programWithDepth(") + e.join(", ") + ")"
            },
            register: function(a, b) {
                this.useRegister(a),
                this.source.push(a + " = " + b + ";")
            },
            useRegister: function(a) {
                this.registers[a] || (this.registers[a] = !0, this.registers.list.push(a))
            },
            pushStackLiteral: function(a) {
                return this.push(new n(a))
            },
            pushStack: function(a) {
                this.flushInline();
                var b = this.incrStack();
                return a && this.source.push(b + " = " + a + ";"),
                this.compileStack.push(b),
                b
            },
            replaceStack: function(a) {
                var b, c = "",
                d = this.isInline();
                if (d) {
                    var e = this.popStack(!0);
                    if (e instanceof n) b = e.value;
                    else {
                        var f = this.stackSlot ? this.topStackName() : this.incrStack();
                        c = "(" + this.push(f) + " = " + e + "),",
                        b = this.topStack()
                    }
                } else b = this.topStack();
                var g = a.call(this, b);
                return d ? ((this.inlineStack.length || this.compileStack.length) && this.popStack(), this.push("(" + c + g + ")")) : (/^stack/.test(b) || (b = this.nextStack()), this.source.push(b + " = (" + c + g + ");")),
                b
            },
            nextStack: function() {
                return this.pushStack()
            },
            incrStack: function() {
                return this.stackSlot++,
                this.stackSlot > this.stackVars.length && this.stackVars.push("stack" + this.stackSlot),
                this.topStackName()
            },
            topStackName: function() {
                return "stack" + this.stackSlot
            },
            flushInline: function() {
                var a = this.inlineStack;
                if (a.length) {
                    this.inlineStack = [];
                    for (var b = 0,
                    c = a.length; c > b; b++) {
                        var d = a[b];
                        d instanceof n ? this.compileStack.push(d) : this.pushStack(d)
                    }
                }
            },
            isInline: function() {
                return this.inlineStack.length
            },
            popStack: function(a) {
                var b = this.isInline(),
                c = (b ? this.inlineStack: this.compileStack).pop();
                return ! a && c instanceof n ? c.value: (b || this.stackSlot--, c)
            },
            topStack: function(a) {
                var b = this.isInline() ? this.inlineStack: this.compileStack,
                c = b[b.length - 1];
                return ! a && c instanceof n ? c.value: c
            },
            quotedString: function(a) {
                return '"' + a.replace(/\\/g, "\\\\").replace(/"/g, '\\"').replace(/\n/g, "\\n").replace(/\r/g, "\\r").replace(/\u2028/g, "\\u2028").replace(/\u2029/g, "\\u2029") + '"'
            },
            setupHelper: function(a, b, c) {
                var d = [];
                this.setupParams(a, d, c);
                var e = this.nameLookup("helpers", b, "helper");
                return {
                    params: d,
                    name: e,
                    callParams: ["depth0"].concat(d).join(", "),
                    helperMissingParams: c && ["depth0", this.quotedString(b)].concat(d).join(", ")
                }
            },
            setupParams: function(a, b, c) {
                var d, e, f, g = [],
                h = [],
                i = [];
                g.push("hash:" + this.popStack()),
                e = this.popStack(),
                f = this.popStack(),
                (f || e) && (f || (this.context.aliases.self = "this", f = "self.noop"), e || (this.context.aliases.self = "this", e = "self.noop"), g.push("inverse:" + e), g.push("fn:" + f));
                for (var j = 0; a > j; j++) d = this.popStack(),
                b.push(d),
                this.options.stringParams && (i.push(this.popStack()), h.push(this.popStack()));
                return this.options.stringParams && (g.push("contexts:[" + h.join(",") + "]"), g.push("types:[" + i.join(",") + "]"), g.push("hashContexts:hashContexts"), g.push("hashTypes:hashTypes")),
                this.options.data && g.push("data:data"),
                g = "{" + g.join(",") + "}",
                c ? (this.register("options", g), b.push("options")) : b.push(g),
                b.join(", ")
            }
        };
        for (var o = "break else new var case finally return void catch for switch while continue function this with default if throw delete in try do instanceof typeof abstract enum int short boolean export interface static byte extends long super char final native synchronized class float package throws const goto private transient debugger implements protected volatile double import public let yield".split(" "), p = m.RESERVED_WORDS = {},
        q = 0, r = o.length; r > q; q++) p[o[q]] = !0;
        m.isValidJavaScriptVariableName = function(a) {
            return ! m.RESERVED_WORDS[a] && /^[a-zA-Z_$][0-9a-zA-Z_$]+$/.test(a) ? !0 : !1
        },
        a.precompile = function(b, c) {
            if (null == b || "string" != typeof b && b.constructor !== a.AST.ProgramNode) throw new a.Exception("You must pass a string or Handlebars AST to Handlebars.precompile. You passed " + b);
            c = c || {},
            "data" in c || (c.data = !0);
            var d = a.parse(b),
            e = (new l).compile(d, c);
            return (new m).compile(e, c)
        },
        a.compile = function(c, d) {
            function e() {
                var e = a.parse(c),
                f = (new l).compile(e, d),
                g = (new m).compile(f, d, b, !0);
                return a.template(g)
            }
            if (null == c || "string" != typeof c && c.constructor !== a.AST.ProgramNode) throw new a.Exception("You must pass a string or Handlebars AST to Handlebars.compile. You passed " + c);
            d = d || {},
            "data" in d || (d.data = !0);
            var f;
            return function(a, b) {
                return f || (f = e()),
                f.call(this, a, b)
            }
        },
        a.VM = {
            template: function(b) {
                var c = {
                    escapeExpression: a.Utils.escapeExpression,
                    invokePartial: a.VM.invokePartial,
                    programs: [],
                    program: function(b, c, d) {
                        var e = this.programs[b];
                        return d ? e = a.VM.program(b, c, d) : e || (e = this.programs[b] = a.VM.program(b, c)),
                        e
                    },
                    merge: function(b, c) {
                        var d = b || c;
                        return b && c && (d = {},
                        a.Utils.extend(d, c), a.Utils.extend(d, b)),
                        d
                    },
                    programWithDepth: a.VM.programWithDepth,
                    noop: a.VM.noop,
                    compilerInfo: null
                };
                return function(d, e) {
                    e = e || {};
                    var f = b.call(c, a, d, e.helpers, e.partials, e.data),
                    g = c.compilerInfo || [],
                    h = g[0] || 1,
                    i = a.COMPILER_REVISION;
                    if (h !== i) {
                        if (i > h) {
                            var j = a.REVISION_CHANGES[i],
                            k = a.REVISION_CHANGES[h];
                            throw "Template was precompiled with an older version of Handlebars than the current runtime. Please update your precompiler to a newer version (" + j + ") or downgrade your runtime to an older version (" + k + ")."
                        }
                        throw "Template was precompiled with a newer version of Handlebars than the current runtime. Please update your runtime to a newer version (" + g[1] + ")."
                    }
                    return f
                }
            },
            programWithDepth: function(a, b, c) {
                var d = Array.prototype.slice.call(arguments, 3),
                e = function(a, e) {
                    return e = e || {},
                    b.apply(this, [a, e.data || c].concat(d))
                };
                return e.program = a,
                e.depth = d.length,
                e
            },
            program: function(a, b, c) {
                var d = function(a, d) {
                    return d = d || {},
                    b(a, d.data || c)
                };
                return d.program = a,
                d.depth = 0,
                d
            },
            noop: function() {
                return ""
            },
            invokePartial: function(c, d, e, f, g, h) {
                var i = {
                    helpers: f,
                    partials: g,
                    data: h
                };
                if (c === b) throw new a.Exception("The partial " + d + " could not be found");
                if (c instanceof Function) return c(e, i);
                if (a.compile) return g[d] = a.compile(c, {
                    data: h !== b
                }),
                g[d](e, i);
                throw new a.Exception("The partial " + d + " could not be compiled when running in runtime-only mode")
            }
        },
        a.template = a.VM.template
    } (d),
    d
}),
__tk__define("lib/jquery.cookie", ["./jquery"],
function(a, b, c) {
    var d = a("./jquery");
    d.cookie = function(a, b, c) {
        if ("undefined" == typeof b) {
            var e = null;
            if (document.cookie && "" != document.cookie) for (var f = document.cookie.split(";"), g = 0; g < f.length; g++) {
                var h = d.trim(f[g]);
                if (h.substring(0, a.length + 1) == a + "=") {
                    e = decodeURIComponent(h.substring(a.length + 1));
                    break
                }
            }
            return e
        }
        c = c || {},
        null === b && (b = "", c.expires = -1);
        var i = "";
        if (c.expires && ("number" == typeof c.expires || c.expires.toUTCString)) {
            var j;
            "number" == typeof c.expires ? (j = new Date, j.setTime(j.getTime() + 24 * c.expires * 60 * 60 * 1e3)) : j = c.expires,
            i = "; expires=" + j.toUTCString()
        }
        var k = c.path ? "; path=" + c.path: "",
        l = c.domain ? "; domain=" + c.domain: "",
        m = c.secure ? "; secure": "";
        document.cookie = [a, "=", encodeURIComponent(b), i, k, l, m].join("")
    }
}),
__tk__define("lib/jquery.countdown", ["./jquery"],
function(a, b, c) {
    "use strict";
    function d(a) {
        if (a instanceof Date) return a;
        if (String(a).match(j)) return String(a).match(/^[0-9]*$/) && (a = Number(a)),
        String(a).match(/\-/) && (a = String(a).replace(/\-/g, "/")),
        new Date(a);
        throw new Error("Couldn't cast `" + a + "` to a date object.")
    }
    function e(a) {
        return function(b) {
            var c = b.match(/%(-|!)?[A-Z]{1}(:[^;]+;)?/gi);
            if (c) for (var d = 0,
            e = c.length; e > d; ++d) {
                var g = c[d].match(/%(-|!)?([a-zA-Z]{1})(:[^;]+;)?/),
                h = new RegExp(g[0]),
                i = g[1] || "",
                j = g[3] || "",
                l = null;
                g = g[2],
                k.hasOwnProperty(g) && (l = k[g], l = Number(a[l])),
                null !== l && ("!" === i && (l = f(j, l)), "" === i && "c" !== g && 10 > l && (l = "0" + l.toString()), b = b.replace(h, l.toString()))
            }
            return b = b.replace(/%%/, "%")
        }
    }
    function f(a, b) {
        var c = "s",
        d = "";
        return a && (a = a.replace(/(:|;|\s)/gi, "").split(/\,/), 1 === a.length ? c = a[0] : (d = a[0], c = a[1])),
        1 === Math.abs(b) ? d: c
    }
    var g = a("./jquery"),
    h = 1e3,
    i = [],
    j = [];
    j.push(/^[0-9]*$/.source),
    j.push(/([0-9]{1,2}\/){2}[0-9]{4}( [0-9]{1,2}(:[0-9]{2}){2})?/.source),
    j.push(/[0-9]{4}([\/\-][0-9]{1,2}){2}( [0-9]{1,2}(:[0-9]{2}){2})?/.source),
    j = new RegExp(j.join("|"));
    var k = {
        Y: "years",
        m: "months",
        w: "weeks",
        d: "days",
        D: "totalDays",
        H: "hours",
        h: "totalHours",
        M: "minutes",
        S: "seconds",
        c: "millisecond"
    },
    l = function(a, b, c, d, e) {
        this.el = a,
        this.$el = g(a),
        this.interval = null,
        this.upTin = null,
        this.offset = {},
        this.setFinalDate(b),
        this.setUpFinalDate(c),
        this.setNowDate(d),
        this.instanceNumber = i.length,
        i.push(this),
        this.$el.data("countdown-instance", this.instanceNumber),
        e && (this.$el.on("update.countdown", e), this.$el.on("stoped.countdown", e), this.$el.on("finish.countdown", e), this.$el.on("upfinish.countdown", e)),
        this.start()
    };
    return g.extend(l.prototype, {
        start: function() {
            if (null !== this.interval) throw new Error("Countdown is already running!");
            var a = this;
            this.update(),
            this.interval = setInterval(function() {
                a.update.call(a)
            },
            h)
        },
        upStart: function() {
            if (null !== this.upTin) throw new Error("Countdown is already running!");
            var a = this;
            this.totalSecsLeft = 0,
            this.upUpdate(),
            this.upTin = setInterval(function() {
                a.upUpdate.call(a)
            },
            h)
        },
        stop: function() {
            clearInterval(this.interval),
            this.interval = null,
            this.dispatchEvent("stoped")
        },
        pause: function() {
            this.stop.call(this)
        },
        resume: function() {
            this.start.call(this)
        },
        remove: function() {
            this.stop(),
            delete i[this.instanceNumber]
        },
        setFinalDate: function(a) {
            this.finalDate = d(a)
        },
        setUpFinalDate: function(a) {
            this.upFinalDate = d(a)
        },
        setNowDate: function(a) {
            a ? this.nowDate = d(a).valueOf() - (new Date).valueOf() : this.nowDate = 0
        },
        upUpdate: function() {
            return 0 === this.$el.closest("html").length ? void this.remove() : (this.totalSecsLeft = this.upFinalDate.valueOf() - ((new Date).valueOf() + this.nowDate), this.millisecond = parseInt(Math.ceil(this.totalSecsLeft % 1e3) / 100, 10), this.totalSecsLeft = Math.ceil(this.totalSecsLeft / 1e3), this.totalSecsLeft = this.totalSecsLeft < 0 ? 0 : this.totalSecsLeft, this.offset = {
                millisecond: this.millisecond,
                seconds: this.totalSecsLeft % 60,
                minutes: Math.floor(this.totalSecsLeft / 60) % 60,
                hours: Math.floor(this.totalSecsLeft / 60 / 60) % 24,
                totalHours: Math.floor(this.totalSecsLeft / 60 / 60),
                days: Math.floor(this.totalSecsLeft / 60 / 60 / 24) % 7,
                totalDays: Math.floor(this.totalSecsLeft / 60 / 60 / 24),
                weeks: Math.floor(this.totalSecsLeft / 60 / 60 / 24 / 7),
                months: Math.floor(this.totalSecsLeft / 60 / 60 / 24 / 30),
                years: Math.floor(this.totalSecsLeft / 60 / 60 / 24 / 365)
            },
            void(0 === this.totalSecsLeft ? (clearInterval(this.upTin), this.upTin = null, this.stop(), this.dispatchEvent("upfinish")) : this.dispatchEvent("upUpdate")))
        },
        update: function() {
            return 0 === this.$el.closest("html").length ? void this.remove() : (this.totalSecsLeft = this.finalDate.valueOf() - ((new Date).valueOf() + this.nowDate), this.totalSecsLeft = Math.ceil(this.totalSecsLeft / 1e3), this.totalSecsLeft = this.totalSecsLeft < 0 ? 0 : this.totalSecsLeft, this.offset = {
                seconds: this.totalSecsLeft % 60,
                minutes: Math.floor(this.totalSecsLeft / 60) % 60,
                hours: Math.floor(this.totalSecsLeft / 60 / 60) % 24,
                totalHours: Math.floor(this.totalSecsLeft / 60 / 60),
                days: Math.floor(this.totalSecsLeft / 60 / 60 / 24) % 7,
                totalDays: Math.floor(this.totalSecsLeft / 60 / 60 / 24),
                weeks: Math.floor(this.totalSecsLeft / 60 / 60 / 24 / 7),
                months: Math.floor(this.totalSecsLeft / 60 / 60 / 24 / 30),
                years: Math.floor(this.totalSecsLeft / 60 / 60 / 24 / 365)
            },
            void(0 === this.totalSecsLeft ? (clearInterval(this.interval), this.interval = null, this.upTin = null, this.upStart(), this.dispatchEvent("finish")) : this.dispatchEvent("update")))
        },
        dispatchEvent: function(a) {
            var b = g.Event(a + ".countdown");
            b.finalDate = this.finalDate,
            b.offset = g.extend({},
            this.offset),
            b.strftime = e(this.offset),
            this.$el.trigger(b)
        }
    }),
    g.fn.countdown = function() {
        var a = Array.prototype.slice.call(arguments, 0);
        return this.each(function() {
            var b = g(this).data("countdown-instance");
            if (void 0 !== b) {
                var c = i[b],
                d = a[0];
                l.prototype.hasOwnProperty(d) ? c[d].apply(c, a.slice(1)) : null === String(d).match(/^[$A-Z_][0-9A-Z_$]*$/i) ? c.setFinalDate.call(c, d) : g.error("Method %s does not exist on jQuery.countdown".replace(/\%s/gi, d))
            } else new l(this, a[0], a[1], a[2])
        })
    },
    g
}),
__tk__define("lib/jquery.easing", ["./jquery"],
function(a, b, c) {
    var d = a("./jquery");
    d.easing.jswing = d.easing.swing,
    d.extend(d.easing, {
        def: "easeOutQuad",
        swing: function(a, b, c, e, f) {
            return d.easing[d.easing.def](a, b, c, e, f)
        },
        easeInQuad: function(a, b, c, d, e) {
            return d * (b /= e) * b + c
        },
        easeOutQuad: function(a, b, c, d, e) {
            return - d * (b /= e) * (b - 2) + c
        },
        easeInOutQuad: function(a, b, c, d, e) {
            return (b /= e / 2) < 1 ? d / 2 * b * b + c: -d / 2 * (--b * (b - 2) - 1) + c
        },
        easeInCubic: function(a, b, c, d, e) {
            return d * (b /= e) * b * b + c
        },
        easeOutCubic: function(a, b, c, d, e) {
            return d * ((b = b / e - 1) * b * b + 1) + c
        },
        easeInOutCubic: function(a, b, c, d, e) {
            return (b /= e / 2) < 1 ? d / 2 * b * b * b + c: d / 2 * ((b -= 2) * b * b + 2) + c
        },
        easeInQuart: function(a, b, c, d, e) {
            return d * (b /= e) * b * b * b + c
        },
        easeOutQuart: function(a, b, c, d, e) {
            return - d * ((b = b / e - 1) * b * b * b - 1) + c
        },
        easeInOutQuart: function(a, b, c, d, e) {
            return (b /= e / 2) < 1 ? d / 2 * b * b * b * b + c: -d / 2 * ((b -= 2) * b * b * b - 2) + c
        },
        easeInQuint: function(a, b, c, d, e) {
            return d * (b /= e) * b * b * b * b + c
        },
        easeOutQuint: function(a, b, c, d, e) {
            return d * ((b = b / e - 1) * b * b * b * b + 1) + c
        },
        easeInOutQuint: function(a, b, c, d, e) {
            return (b /= e / 2) < 1 ? d / 2 * b * b * b * b * b + c: d / 2 * ((b -= 2) * b * b * b * b + 2) + c
        },
        easeInSine: function(a, b, c, d, e) {
            return - d * Math.cos(b / e * (Math.PI / 2)) + d + c
        },
        easeOutSine: function(a, b, c, d, e) {
            return d * Math.sin(b / e * (Math.PI / 2)) + c
        },
        easeInOutSine: function(a, b, c, d, e) {
            return - d / 2 * (Math.cos(Math.PI * b / e) - 1) + c
        },
        easeInExpo: function(a, b, c, d, e) {
            return 0 == b ? c: d * Math.pow(2, 10 * (b / e - 1)) + c
        },
        easeOutExpo: function(a, b, c, d, e) {
            return b == e ? c + d: d * ( - Math.pow(2, -10 * b / e) + 1) + c
        },
        easeInOutExpo: function(a, b, c, d, e) {
            return 0 == b ? c: b == e ? c + d: (b /= e / 2) < 1 ? d / 2 * Math.pow(2, 10 * (b - 1)) + c: d / 2 * ( - Math.pow(2, -10 * --b) + 2) + c
        },
        easeInCirc: function(a, b, c, d, e) {
            return - d * (Math.sqrt(1 - (b /= e) * b) - 1) + c
        },
        easeOutCirc: function(a, b, c, d, e) {
            return d * Math.sqrt(1 - (b = b / e - 1) * b) + c
        },
        easeInOutCirc: function(a, b, c, d, e) {
            return (b /= e / 2) < 1 ? -d / 2 * (Math.sqrt(1 - b * b) - 1) + c: d / 2 * (Math.sqrt(1 - (b -= 2) * b) + 1) + c
        },
        easeInElastic: function(a, b, c, d, e) {
            var f = 1.70158,
            g = 0,
            h = d;
            if (0 == b) return c;
            if (1 == (b /= e)) return c + d;
            if (g || (g = .3 * e), h < Math.abs(d)) {
                h = d;
                var f = g / 4
            } else var f = g / (2 * Math.PI) * Math.asin(d / h);
            return - (h * Math.pow(2, 10 * (b -= 1)) * Math.sin(2 * (b * e - f) * Math.PI / g)) + c
        },
        easeOutElastic: function(a, b, c, d, e) {
            var f = 1.70158,
            g = 0,
            h = d;
            if (0 == b) return c;
            if (1 == (b /= e)) return c + d;
            if (g || (g = .3 * e), h < Math.abs(d)) {
                h = d;
                var f = g / 4
            } else var f = g / (2 * Math.PI) * Math.asin(d / h);
            return h * Math.pow(2, -10 * b) * Math.sin(2 * (b * e - f) * Math.PI / g) + d + c
        },
        easeInOutElastic: function(a, b, c, d, e) {
            var f = 1.70158,
            g = 0,
            h = d;
            if (0 == b) return c;
            if (2 == (b /= e / 2)) return c + d;
            if (g || (g = .3 * e * 1.5), h < Math.abs(d)) {
                h = d;
                var f = g / 4
            } else var f = g / (2 * Math.PI) * Math.asin(d / h);
            return 1 > b ? -.5 * h * Math.pow(2, 10 * (b -= 1)) * Math.sin(2 * (b * e - f) * Math.PI / g) + c: h * Math.pow(2, -10 * (b -= 1)) * Math.sin(2 * (b * e - f) * Math.PI / g) * .5 + d + c
        },
        easeInBack: function(a, b, c, d, e, f) {
            return void 0 == f && (f = 1.70158),
            d * (b /= e) * b * ((f + 1) * b - f) + c
        },
        easeOutBack: function(a, b, c, d, e, f) {
            return void 0 == f && (f = 1.70158),
            d * ((b = b / e - 1) * b * ((f + 1) * b + f) + 1) + c
        },
        easeInOutBack: function(a, b, c, d, e, f) {
            return void 0 == f && (f = 1.70158),
            (b /= e / 2) < 1 ? d / 2 * b * b * (((f *= 1.525) + 1) * b - f) + c: d / 2 * ((b -= 2) * b * (((f *= 1.525) + 1) * b + f) + 2) + c
        },
        easeInBounce: function(a, b, c, e, f) {
            return e - d.easing.easeOutBounce(a, f - b, 0, e, f) + c
        },
        easeOutBounce: function(a, b, c, d, e) {
            return (b /= e) < 1 / 2.75 ? 7.5625 * d * b * b + c: 2 / 2.75 > b ? d * (7.5625 * (b -= 1.5 / 2.75) * b + .75) + c: 2.5 / 2.75 > b ? d * (7.5625 * (b -= 2.25 / 2.75) * b + .9375) + c: d * (7.5625 * (b -= 2.625 / 2.75) * b + .984375) + c
        },
        easeInOutBounce: function(a, b, c, e, f) {
            return f / 2 > b ? .5 * d.easing.easeInBounce(a, 2 * b, 0, e, f) + c: .5 * d.easing.easeOutBounce(a, 2 * b - f, 0, e, f) + .5 * e + c
        }
    })
}),
__tk__define("lib/jquery", [],
function(a, b, c) { !
    function(a, b) {
        function d(a) {
            var b = a.length,
            c = ia.type(a);
            return ia.isWindow(a) ? !1 : 1 === a.nodeType && b ? !0 : "array" === c || "function" !== c && (0 === b || "number" == typeof b && b > 0 && b - 1 in a)
        }
        function e(a) {
            var b = xa[a] = {};
            return ia.each(a.match(ka) || [],
            function(a, c) {
                b[c] = !0
            }),
            b
        }
        function f(a, c, d, e) {
            if (ia.acceptData(a)) {
                var f, g, h = ia.expando,
                i = a.nodeType,
                j = i ? ia.cache: a,
                k = i ? a[h] : a[h] && h;
                if (k && j[k] && (e || j[k].data) || d !== b || "string" != typeof c) return k || (k = i ? a[h] = _.pop() || ia.guid++:h),
                j[k] || (j[k] = i ? {}: {
                    toJSON: ia.noop
                }),
                ("object" == typeof c || "function" == typeof c) && (e ? j[k] = ia.extend(j[k], c) : j[k].data = ia.extend(j[k].data, c)),
                g = j[k],
                e || (g.data || (g.data = {}), g = g.data),
                d !== b && (g[ia.camelCase(c)] = d),
                "string" == typeof c ? (f = g[c], null == f && (f = g[ia.camelCase(c)])) : f = g,
                f
            }
        }
        function g(a, b, c) {
            if (ia.acceptData(a)) {
                var d, e, f = a.nodeType,
                g = f ? ia.cache: a,
                h = f ? a[ia.expando] : ia.expando;
                if (g[h]) {
                    if (b && (d = c ? g[h] : g[h].data)) {
                        ia.isArray(b) ? b = b.concat(ia.map(b, ia.camelCase)) : b in d ? b = [b] : (b = ia.camelCase(b), b = b in d ? [b] : b.split(" ")),
                        e = b.length;
                        for (; e--;) delete d[b[e]];
                        if (c ? !i(d) : !ia.isEmptyObject(d)) return
                    } (c || (delete g[h].data, i(g[h]))) && (f ? ia.cleanData([a], !0) : ia.support.deleteExpando || g != g.window ? delete g[h] : g[h] = null)
                }
            }
        }
        function h(a, c, d) {
            if (d === b && 1 === a.nodeType) {
                var e = "data-" + c.replace(za, "-$1").toLowerCase();
                if (d = a.getAttribute(e), "string" == typeof d) {
                    try {
                        d = "true" === d ? !0 : "false" === d ? !1 : "null" === d ? null: +d + "" === d ? +d: ya.test(d) ? ia.parseJSON(d) : d
                    } catch(f) {}
                    ia.data(a, c, d)
                } else d = b
            }
            return d
        }
        function i(a) {
            var b;
            for (b in a) if (("data" !== b || !ia.isEmptyObject(a[b])) && "toJSON" !== b) return ! 1;
            return ! 0
        }
        function j() {
            return ! 0
        }
        function k() {
            return ! 1
        }
        function l(a, b) {
            do a = a[b];
            while (a && 1 !== a.nodeType);
            return a
        }
        function m(a, b, c) {
            if (b = b || 0, ia.isFunction(b)) return ia.grep(a,
            function(a, d) {
                var e = !!b.call(a, d, a);
                return e === c
            });
            if (b.nodeType) return ia.grep(a,
            function(a) {
                return a === b === c
            });
            if ("string" == typeof b) {
                var d = ia.grep(a,
                function(a) {
                    return 1 === a.nodeType
                });
                if (Ra.test(b)) return ia.filter(b, d, !c);
                b = ia.filter(b, d)
            }
            return ia.grep(a,
            function(a) {
                return ia.inArray(a, b) >= 0 === c
            })
        }
        function n(a) {
            var b = Ua.split("|"),
            c = a.createDocumentFragment();
            if (c.createElement) for (; b.length;) c.createElement(b.pop());
            return c
        }
        function o(a, b) {
            return a.getElementsByTagName(b)[0] || a.appendChild(a.ownerDocument.createElement(b))
        }
        function p(a) {
            var b = a.getAttributeNode("type");
            return a.type = (b && b.specified) + "/" + a.type,
            a
        }
        function q(a) {
            var b = eb.exec(a.type);
            return b ? a.type = b[1] : a.removeAttribute("type"),
            a
        }
        function r(a, b) {
            for (var c, d = 0; null != (c = a[d]); d++) ia._data(c, "globalEval", !b || ia._data(b[d], "globalEval"))
        }
        function s(a, b) {
            if (1 === b.nodeType && ia.hasData(a)) {
                var c, d, e, f = ia._data(a),
                g = ia._data(b, f),
                h = f.events;
                if (h) {
                    delete g.handle,
                    g.events = {};
                    for (c in h) for (d = 0, e = h[c].length; e > d; d++) ia.event.add(b, c, h[c][d])
                }
                g.data && (g.data = ia.extend({},
                g.data))
            }
        }
        function t(a, b) {
            var c, d, e;
            if (1 === b.nodeType) {
                if (c = b.nodeName.toLowerCase(), !ia.support.noCloneEvent && b[ia.expando]) {
                    e = ia._data(b);
                    for (d in e.events) ia.removeEvent(b, d, e.handle);
                    b.removeAttribute(ia.expando)
                }
                "script" === c && b.text !== a.text ? (p(b).text = a.text, q(b)) : "object" === c ? (b.parentNode && (b.outerHTML = a.outerHTML), ia.support.html5Clone && a.innerHTML && !ia.trim(b.innerHTML) && (b.innerHTML = a.innerHTML)) : "input" === c && bb.test(a.type) ? (b.defaultChecked = b.checked = a.checked, b.value !== a.value && (b.value = a.value)) : "option" === c ? b.defaultSelected = b.selected = a.defaultSelected: ("input" === c || "textarea" === c) && (b.defaultValue = a.defaultValue)
            }
        }
        function u(a, c) {
            var d, e, f = 0,
            g = typeof a.getElementsByTagName !== U ? a.getElementsByTagName(c || "*") : typeof a.querySelectorAll !== U ? a.querySelectorAll(c || "*") : b;
            if (!g) for (g = [], d = a.childNodes || a; null != (e = d[f]); f++) ! c || ia.nodeName(e, c) ? g.push(e) : ia.merge(g, u(e, c));
            return c === b || c && ia.nodeName(a, c) ? ia.merge([a], g) : g
        }
        function v(a) {
            bb.test(a.type) && (a.defaultChecked = a.checked)
        }
        function w(a, b) {
            if (b in a) return b;
            for (var c = b.charAt(0).toUpperCase() + b.slice(1), d = b, e = yb.length; e--;) if (b = yb[e] + c, b in a) return b;
            return d
        }
        function x(a, b) {
            return a = b || a,
            "none" === ia.css(a, "display") || !ia.contains(a.ownerDocument, a)
        }
        function y(a, b) {
            for (var c, d, e, f = [], g = 0, h = a.length; h > g; g++) d = a[g],
            d.style && (f[g] = ia._data(d, "olddisplay"), c = d.style.display, b ? (f[g] || "none" !== c || (d.style.display = ""), "" === d.style.display && x(d) && (f[g] = ia._data(d, "olddisplay", C(d.nodeName)))) : f[g] || (e = x(d), (c && "none" !== c || !e) && ia._data(d, "olddisplay", e ? c: ia.css(d, "display"))));
            for (g = 0; h > g; g++) d = a[g],
            d.style && (b && "none" !== d.style.display && "" !== d.style.display || (d.style.display = b ? f[g] || "": "none"));
            return a
        }
        function z(a, b, c) {
            var d = rb.exec(b);
            return d ? Math.max(0, d[1] - (c || 0)) + (d[2] || "px") : b
        }
        function A(a, b, c, d, e) {
            for (var f = c === (d ? "border": "content") ? 4 : "width" === b ? 1 : 0, g = 0; 4 > f; f += 2)"margin" === c && (g += ia.css(a, c + xb[f], !0, e)),
            d ? ("content" === c && (g -= ia.css(a, "padding" + xb[f], !0, e)), "margin" !== c && (g -= ia.css(a, "border" + xb[f] + "Width", !0, e))) : (g += ia.css(a, "padding" + xb[f], !0, e), "padding" !== c && (g += ia.css(a, "border" + xb[f] + "Width", !0, e)));
            return g
        }
        function B(a, b, c) {
            var d = !0,
            e = "width" === b ? a.offsetWidth: a.offsetHeight,
            f = kb(a),
            g = ia.support.boxSizing && "border-box" === ia.css(a, "boxSizing", !1, f);
            if (0 >= e || null == e) {
                if (e = lb(a, b, f), (0 > e || null == e) && (e = a.style[b]), sb.test(e)) return e;
                d = g && (ia.support.boxSizingReliable || e === a.style[b]),
                e = parseFloat(e) || 0
            }
            return e + A(a, b, c || (g ? "border": "content"), d, f) + "px"
        }
        function C(a) {
            var b = W,
            c = ub[a];
            return c || (c = D(a, b), "none" !== c && c || (jb = (jb || ia("<iframe frameborder='0' width='0' height='0'/>").css("cssText", "display:block !important")).appendTo(b.documentElement), b = (jb[0].contentWindow || jb[0].contentDocument).document, b.write("<!doctype html><html><body>"), b.close(), c = D(a, b), jb.detach()), ub[a] = c),
            c
        }
        function D(a, b) {
            var c = ia(b.createElement(a)).appendTo(b.body),
            d = ia.css(c[0], "display");
            return c.remove(),
            d
        }
        function E(a, b, c, d) {
            var e;
            if (ia.isArray(b)) ia.each(b,
            function(b, e) {
                c || Ab.test(a) ? d(a, e) : E(a + "[" + ("object" == typeof e ? b: "") + "]", e, c, d)
            });
            else if (c || "object" !== ia.type(b)) d(a, b);
            else for (e in b) E(a + "[" + e + "]", b[e], c, d)
        }
        function F(a) {
            return function(b, c) {
                "string" != typeof b && (c = b, b = "*");
                var d, e = 0,
                f = b.toLowerCase().match(ka) || [];
                if (ia.isFunction(c)) for (; d = f[e++];)"+" === d[0] ? (d = d.slice(1) || "*", (a[d] = a[d] || []).unshift(c)) : (a[d] = a[d] || []).push(c)
            }
        }
        function G(a, b, c, d) {
            function e(h) {
                var i;
                return f[h] = !0,
                ia.each(a[h] || [],
                function(a, h) {
                    var j = h(b, c, d);
                    return "string" != typeof j || g || f[j] ? g ? !(i = j) : void 0 : (b.dataTypes.unshift(j), e(j), !1)
                }),
                i
            }
            var f = {},
            g = a === Rb;
            return e(b.dataTypes[0]) || !f["*"] && e("*")
        }
        function H(a, c) {
            var d, e, f = ia.ajaxSettings.flatOptions || {};
            for (e in c) c[e] !== b && ((f[e] ? a: d || (d = {}))[e] = c[e]);
            return d && ia.extend(!0, a, d),
            a
        }
        function I(a, c, d) {
            for (var e, f, g, h, i = a.contents,
            j = a.dataTypes;
            "*" === j[0];) j.shift(),
            f === b && (f = a.mimeType || c.getResponseHeader("Content-Type"));
            if (f) for (h in i) if (i[h] && i[h].test(f)) {
                j.unshift(h);
                break
            }
            if (j[0] in d) g = j[0];
            else {
                for (h in d) {
                    if (!j[0] || a.converters[h + " " + j[0]]) {
                        g = h;
                        break
                    }
                    e || (e = h)
                }
                g = g || e
            }
            return g ? (g !== j[0] && j.unshift(g), d[g]) : void 0
        }
        function J(a, b, c, d) {
            var e, f, g, h, i, j = {},
            k = a.dataTypes.slice();
            if (k[1]) for (g in a.converters) j[g.toLowerCase()] = a.converters[g];
            for (f = k.shift(); f;) if (a.responseFields[f] && (c[a.responseFields[f]] = b), !i && d && a.dataFilter && (b = a.dataFilter(b, a.dataType)), i = f, f = k.shift()) if ("*" === f) f = i;
            else if ("*" !== i && i !== f) {
                if (g = j[i + " " + f] || j["* " + f], !g) for (e in j) if (h = e.split(" "), h[1] === f && (g = j[i + " " + h[0]] || j["* " + h[0]])) {
                    g === !0 ? g = j[e] : j[e] !== !0 && (f = h[0], k.unshift(h[1]));
                    break
                }
                if (g !== !0) if (g && a["throws"]) b = g(b);
                else try {
                    b = g(b)
                } catch(l) {
                    return {
                        state: "parsererror",
                        error: g ? l: "No conversion from " + i + " to " + f
                    }
                }
            }
            return {
                state: "success",
                data: b
            }
        }
        function K() {
            return setTimeout(function() {
                Wb = b
            }),
            Wb = ia.now()
        }
        function L(a, b) {
            ia.each(b,
            function(b, c) {
                for (var d = (ac[b] || []).concat(ac["*"]), e = 0, f = d.length; f > e; e++) if (d[e].call(a, b, c)) return
            })
        }
        function M(a, b, c) {
            var d, e, f = 0,
            g = _b.length,
            h = ia.Deferred().always(function() {
                delete i.elem
            }),
            i = function() {
                if (e) return ! 1;
                for (var b = Wb || K(), c = Math.max(0, j.startTime + j.duration - b), d = c / j.duration || 0, f = 1 - d, g = 0, i = j.tweens.length; i > g; g++) j.tweens[g].run(f);
                return h.notifyWith(a, [j, f, c]),
                1 > f && i ? c: (h.resolveWith(a, [j]), !1)
            },
            j = h.promise({
                elem: a,
                props: ia.extend({},
                b),
                opts: ia.extend(!0, {
                    specialEasing: {}
                },
                c),
                originalProperties: b,
                originalOptions: c,
                startTime: Wb || K(),
                duration: c.duration,
                tweens: [],
                createTween: function(b, c) {
                    var d = ia.Tween(a, j.opts, b, c, j.opts.specialEasing[b] || j.opts.easing);
                    return j.tweens.push(d),
                    d
                },
                stop: function(b) {
                    var c = 0,
                    d = b ? j.tweens.length: 0;
                    if (e) return this;
                    for (e = !0; d > c; c++) j.tweens[c].run(1);
                    return b ? h.resolveWith(a, [j, b]) : h.rejectWith(a, [j, b]),
                    this
                }
            }),
            k = j.props;
            for (N(k, j.opts.specialEasing); g > f; f++) if (d = _b[f].call(j, a, k, j.opts)) return d;
            return L(j, k),
            ia.isFunction(j.opts.start) && j.opts.start.call(a, j),
            ia.fx.timer(ia.extend(i, {
                elem: a,
                anim: j,
                queue: j.opts.queue
            })),
            j.progress(j.opts.progress).done(j.opts.done, j.opts.complete).fail(j.opts.fail).always(j.opts.always)
        }
        function N(a, b) {
            var c, d, e, f, g;
            for (e in a) if (d = ia.camelCase(e), f = b[d], c = a[e], ia.isArray(c) && (f = c[1], c = a[e] = c[0]), e !== d && (a[d] = c, delete a[e]), g = ia.cssHooks[d], g && "expand" in g) {
                c = g.expand(c),
                delete a[d];
                for (e in c) e in a || (a[e] = c[e], b[e] = f)
            } else b[d] = f
        }
        function O(a, b, c) {
            var d, e, f, g, h, i, j, k, l, m = this,
            n = a.style,
            o = {},
            p = [],
            q = a.nodeType && x(a);
            c.queue || (k = ia._queueHooks(a, "fx"), null == k.unqueued && (k.unqueued = 0, l = k.empty.fire, k.empty.fire = function() {
                k.unqueued || l()
            }), k.unqueued++, m.always(function() {
                m.always(function() {
                    k.unqueued--,
                    ia.queue(a, "fx").length || k.empty.fire()
                })
            })),
            1 === a.nodeType && ("height" in b || "width" in b) && (c.overflow = [n.overflow, n.overflowX, n.overflowY], "inline" === ia.css(a, "display") && "none" === ia.css(a, "float") && (ia.support.inlineBlockNeedsLayout && "inline" !== C(a.nodeName) ? n.zoom = 1 : n.display = "inline-block")),
            c.overflow && (n.overflow = "hidden", ia.support.shrinkWrapBlocks || m.always(function() {
                n.overflow = c.overflow[0],
                n.overflowX = c.overflow[1],
                n.overflowY = c.overflow[2]
            }));
            for (e in b) if (g = b[e], Yb.exec(g)) {
                if (delete b[e], i = i || "toggle" === g, g === (q ? "hide": "show")) continue;
                p.push(e)
            }
            if (f = p.length) {
                h = ia._data(a, "fxshow") || ia._data(a, "fxshow", {}),
                "hidden" in h && (q = h.hidden),
                i && (h.hidden = !q),
                q ? ia(a).show() : m.done(function() {
                    ia(a).hide()
                }),
                m.done(function() {
                    var b;
                    ia._removeData(a, "fxshow");
                    for (b in o) ia.style(a, b, o[b])
                });
                for (e = 0; f > e; e++) d = p[e],
                j = m.createTween(d, q ? h[d] : 0),
                o[d] = h[d] || ia.style(a, d),
                d in h || (h[d] = j.start, q && (j.end = j.start, j.start = "width" === d || "height" === d ? 1 : 0))
            }
        }
        function P(a, b, c, d, e) {
            return new P.prototype.init(a, b, c, d, e)
        }
        function Q(a, b) {
            var c, d = {
                height: a
            },
            e = 0;
            for (b = b ? 1 : 0; 4 > e; e += 2 - b) c = xb[e],
            d["margin" + c] = d["padding" + c] = a;
            return b && (d.opacity = d.width = a),
            d
        }
        function R(a) {
            return ia.isWindow(a) ? a: 9 === a.nodeType ? a.defaultView || a.parentWindow: !1
        }
        var S, T, U = typeof b,
        V = a.location,
        W = a.document,
        X = W.documentElement,
        Y = a.jQuery,
        Z = a.$,
        $ = {},
        _ = [],
        aa = "1.9.2-pre -event-alias,-ajax/xhr,-deprecated",
        ba = _.concat,
        ca = _.push,
        da = _.slice,
        ea = _.indexOf,
        fa = $.toString,
        ga = $.hasOwnProperty,
        ha = aa.trim,
        ia = function(a, b) {
            return new ia.fn.init(a, b, T)
        },
        ja = /[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,
        ka = /\S+/g,
        la = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,
        ma = /^(?:(<[\w\W]+>)[^>]*|#([\w-]*))$/,
        na = /^<(\w+)\s*\/?>(?:<\/\1>|)$/,
        oa = /^[\],:{}\s]*$/,
        pa = /(?:^|:|,)(?:\s*\[)+/g,
        qa = /\\(?:["\\\/bfnrt]|u[\da-fA-F]{4})/g,
        ra = /"[^"\\\r\n]*"|true|false|null|-?(?:\d+\.|)\d+(?:[eE][+-]?\d+|)/g,
        sa = /^-ms-/,
        ta = /-([\da-z])/gi,
        ua = function(a, b) {
            return b.toUpperCase()
        },
        va = function(a) { (W.addEventListener || "load" === a.type || "complete" === W.readyState) && (wa(), ia.ready())
        },
        wa = function() {
            W.addEventListener ? (W.removeEventListener("DOMContentLoaded", va, !1), a.removeEventListener("load", va, !1)) : (W.detachEvent("onreadystatechange", va), a.detachEvent("onload", va))
        };
        ia.fn = ia.prototype = {
            jquery: aa,
            constructor: ia,
            init: function(a, c, d) {
                var e, f;
                if (!a) return this;
                if ("string" == typeof a) {
                    if (e = "<" === a.charAt(0) && ">" === a.charAt(a.length - 1) && a.length >= 3 ? [null, a, null] : ma.exec(a), !e || !e[1] && c) return ! c || c.jquery ? (c || d).find(a) : this.constructor(c).find(a);
                    if (e[1]) {
                        if (c = c instanceof ia ? c[0] : c, ia.merge(this, ia.parseHTML(e[1], c && c.nodeType ? c.ownerDocument || c: W, !0)), na.test(e[1]) && ia.isPlainObject(c)) for (e in c) ia.isFunction(this[e]) ? this[e](c[e]) : this.attr(e, c[e]);
                        return this
                    }
                    if (f = W.getElementById(e[2]), f && f.parentNode) {
                        if (f.id !== e[2]) return d.find(a);
                        this.length = 1,
                        this[0] = f
                    }
                    return this.context = W,
                    this.selector = a,
                    this
                }
                return a.nodeType ? (this.context = this[0] = a, this.length = 1, this) : ia.isFunction(a) ? d.ready(a) : (a.selector !== b && (this.selector = a.selector, this.context = a.context), ia.makeArray(a, this))
            },
            selector: "",
            length: 0,
            size: function() {
                return this.length
            },
            toArray: function() {
                return da.call(this)
            },
            get: function(a) {
                return null == a ? this.toArray() : 0 > a ? this[this.length + a] : this[a]
            },
            pushStack: function(a) {
                var b = ia.merge(this.constructor(), a);
                return b.prevObject = this,
                b.context = this.context,
                b
            },
            each: function(a, b) {
                return ia.each(this, a, b)
            },
            ready: function(a) {
                return ia.ready.promise().done(a),
                this
            },
            slice: function() {
                return this.pushStack(da.apply(this, arguments))
            },
            first: function() {
                return this.eq(0)
            },
            last: function() {
                return this.eq( - 1)
            },
            eq: function(a) {
                var b = this.length,
                c = +a + (0 > a ? b: 0);
                return this.pushStack(c >= 0 && b > c ? [this[c]] : [])
            },
            map: function(a) {
                return this.pushStack(ia.map(this,
                function(b, c) {
                    return a.call(b, c, b)
                }))
            },
            end: function() {
                return this.prevObject || this.constructor(null)
            },
            push: ca,
            sort: [].sort,
            splice: [].splice
        },
        ia.fn.init.prototype = ia.fn,
        ia.extend = ia.fn.extend = function() {
            var a, c, d, e, f, g, h = arguments[0] || {},
            i = 1,
            j = arguments.length,
            k = !1;
            for ("boolean" == typeof h && (k = h, h = arguments[1] || {},
            i = 2), "object" == typeof h || ia.isFunction(h) || (h = {}), j === i && (h = this, --i); j > i; i++) if (null != (f = arguments[i])) for (e in f) a = h[e],
            d = f[e],
            h !== d && (k && d && (ia.isPlainObject(d) || (c = ia.isArray(d))) ? (c ? (c = !1, g = a && ia.isArray(a) ? a: []) : g = a && ia.isPlainObject(a) ? a: {},
            h[e] = ia.extend(k, g, d)) : d !== b && (h[e] = d));
            return h
        },
        ia.extend({
            expando: "jQuery" + (aa + Math.random()).replace(/\D/g, ""),
            noConflict: function(b) {
                return a.$ === ia && (a.$ = Z),
                b && a.jQuery === ia && (a.jQuery = Y),
                ia
            },
            isReady: !1,
            readyWait: 1,
            holdReady: function(a) {
                a ? ia.readyWait++:ia.ready(!0)
            },
            ready: function(a) {
                if (a === !0 ? !--ia.readyWait: !ia.isReady) {
                    if (!W.body) return setTimeout(ia.ready);
                    ia.isReady = !0,
                    a !== !0 && --ia.readyWait > 0 || (S.resolveWith(W, [ia]), ia.fn.trigger && ia(W).trigger("ready").off("ready"))
                }
            },
            isFunction: function(a) {
                return "function" === ia.type(a)
            },
            isArray: Array.isArray ||
            function(a) {
                return "array" === ia.type(a)
            },
            isWindow: function(a) {
                return null != a && a == a.window
            },
            isNumeric: function(a) {
                return ! isNaN(parseFloat(a)) && isFinite(a)
            },
            type: function(a) {
                return null == a ? String(a) : "object" == typeof a || "function" == typeof a ? $[fa.call(a)] || "object": typeof a
            },
            isPlainObject: function(a) {
                if (!a || "object" !== ia.type(a) || a.nodeType || ia.isWindow(a)) return ! 1;
                try {
                    if (a.constructor && !ga.call(a, "constructor") && !ga.call(a.constructor.prototype, "isPrototypeOf")) return ! 1
                } catch(c) {
                    return ! 1
                }
                var d;
                for (d in a);
                return d === b || ga.call(a, d)
            },
            isEmptyObject: function(a) {
                var b;
                for (b in a) return ! 1;
                return ! 0
            },
            error: function(a) {
                throw new Error(a)
            },
            parseHTML: function(a, b, c) {
                if (!a || "string" != typeof a) return null;
                "boolean" == typeof b && (c = b, b = !1),
                b = b || W;
                var d = na.exec(a),
                e = !c && [];
                return d ? [b.createElement(d[1])] : (d = ia.buildFragment([a], b, e), e && ia(e).remove(), ia.merge([], d.childNodes))
            },
            parseJSON: function(b) {
                return a.JSON && a.JSON.parse ? a.JSON.parse(b) : null === b ? b: "string" == typeof b && (b = ia.trim(b), b && oa.test(b.replace(qa, "@").replace(ra, "]").replace(pa, ""))) ? new Function("return " + b)() : void ia.error("Invalid JSON: " + b)
            },
            parseXML: function(c) {
                var d, e;
                if (!c || "string" != typeof c) return null;
                try {
                    a.DOMParser ? (e = new DOMParser, d = e.parseFromString(c, "text/xml")) : (d = new ActiveXObject("Microsoft.XMLDOM"), d.async = "false", d.loadXML(c))
                } catch(f) {
                    d = b
                }
                return d && d.documentElement && !d.getElementsByTagName("parsererror").length || ia.error("Invalid XML: " + c),
                d
            },
            noop: function() {},
            globalEval: function(b) {
                b && ia.trim(b) && (a.execScript ||
                function(b) {
                    a.eval.call(a, b)
                })(b)
            },
            camelCase: function(a) {
                return a.replace(sa, "ms-").replace(ta, ua)
            },
            nodeName: function(a, b) {
                return a.nodeName && a.nodeName.toLowerCase() === b.toLowerCase()
            },
            each: function(a, b, c) {
                var e, f = 0,
                g = a.length,
                h = d(a);
                if (c) {
                    if (h) for (; g > f && (e = b.apply(a[f], c), e !== !1); f++);
                    else for (f in a) if (e = b.apply(a[f], c), e === !1) break
                } else if (h) for (; g > f && (e = b.call(a[f], f, a[f]), e !== !1); f++);
                else for (f in a) if (e = b.call(a[f], f, a[f]), e === !1) break;
                return a
            },
            trim: ha && !ha.call(" ") ?
            function(a) {
                return null == a ? "": ha.call(a)
            }: function(a) {
                return null == a ? "": (a + "").replace(la, "")
            },
            makeArray: function(a, b) {
                var c = b || [];
                return null != a && (d(Object(a)) ? ia.merge(c, "string" == typeof a ? [a] : a) : ca.call(c, a)),
                c
            },
            inArray: function(a, b, c) {
                var d;
                if (b) {
                    if (ea) return ea.call(b, a, c);
                    for (d = b.length, c = c ? 0 > c ? Math.max(0, d + c) : c: 0; d > c; c++) if (c in b && b[c] === a) return c
                }
                return - 1
            },
            merge: function(a, c) {
                var d = c.length,
                e = a.length,
                f = 0;
                if ("number" == typeof d) for (; d > f; f++) a[e++] = c[f];
                else for (; c[f] !== b;) a[e++] = c[f++];
                return a.length = e,
                a
            },
            grep: function(a, b, c) {
                var d, e = [],
                f = 0,
                g = a.length;
                for (c = !!c; g > f; f++) d = !!b(a[f], f),
                c !== d && e.push(a[f]);
                return e
            },
            map: function(a, b, c) {
                var e, f = 0,
                g = a.length,
                h = d(a),
                i = [];
                if (h) for (; g > f; f++) e = b(a[f], f, c),
                null != e && (i[i.length] = e);
                else for (f in a) e = b(a[f], f, c),
                null != e && (i[i.length] = e);
                return ba.apply([], i)
            },
            guid: 1,
            proxy: function(a, c) {
                var d, e, f;
                return "string" == typeof c && (f = a[c], c = a, a = f),
                ia.isFunction(a) ? (d = da.call(arguments, 2), e = function() {
                    return a.apply(c || this, d.concat(da.call(arguments)))
                },
                e.guid = a.guid = a.guid || ia.guid++, e) : b
            },
            access: function(a, c, d, e, f, g, h) {
                var i = 0,
                j = a.length,
                k = null == d;
                if ("object" === ia.type(d)) {
                    f = !0;
                    for (i in d) ia.access(a, c, i, d[i], !0, g, h)
                } else if (e !== b && (f = !0, ia.isFunction(e) || (h = !0), k && (h ? (c.call(a, e), c = null) : (k = c, c = function(a, b, c) {
                    return k.call(ia(a), c)
                })), c)) for (; j > i; i++) c(a[i], d, h ? e: e.call(a[i], i, c(a[i], d)));
                return f ? a: k ? c.call(a) : j ? c(a[0], d) : g
            },
            now: function() {
                return (new Date).getTime()
            }
        }),
        ia.ready.promise = function(b) {
            if (!S) if (S = ia.Deferred(), "complete" === W.readyState) setTimeout(ia.ready);
            else if (W.addEventListener) W.addEventListener("DOMContentLoaded", va, !1),
            a.addEventListener("load", va, !1);
            else {
                W.attachEvent("onreadystatechange", va),
                a.attachEvent("onload", va);
                var c = !1;
                try {
                    c = null == a.frameElement && W.documentElement
                } catch(d) {}
                c && c.doScroll && !
                function e() {
                    if (!ia.isReady) {
                        try {
                            c.doScroll("left")
                        } catch(a) {
                            return setTimeout(e, 50)
                        }
                        wa(),
                        ia.ready()
                    }
                } ()
            }
            return S.promise(b)
        },
        ia.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),
        function(a, b) {
            $["[object " + b + "]"] = b.toLowerCase()
        }),
        T = ia(W);
        var xa = {};
        ia.Callbacks = function(a) {
            a = "string" == typeof a ? xa[a] || e(a) : ia.extend({},
            a);
            var c, d, f, g, h, i, j = [],
            k = !a.once && [],
            l = function(b) {
                for (d = a.memory && b, f = !0, h = i || 0, i = 0, g = j.length, c = !0; j && g > h; h++) if (j[h].apply(b[0], b[1]) === !1 && a.stopOnFalse) {
                    d = !1;
                    break
                }
                c = !1,
                j && (k ? k.length && l(k.shift()) : d ? j = [] : m.disable());
            },
            m = {
                add: function() {
                    if (j) {
                        var b = j.length; !
                        function e(b) {
                            ia.each(b,
                            function(b, c) {
                                var d = ia.type(c);
                                "function" === d ? a.unique && m.has(c) || j.push(c) : c && c.length && "string" !== d && e(c)
                            })
                        } (arguments),
                        c ? g = j.length: d && (i = b, l(d))
                    }
                    return this
                },
                remove: function() {
                    return j && ia.each(arguments,
                    function(a, b) {
                        for (var d; (d = ia.inArray(b, j, d)) > -1;) j.splice(d, 1),
                        c && (g >= d && g--, h >= d && h--)
                    }),
                    this
                },
                has: function(a) {
                    return a ? ia.inArray(a, j) > -1 : !(!j || !j.length)
                },
                empty: function() {
                    return j = [],
                    g = 0,
                    this
                },
                disable: function() {
                    return j = k = d = b,
                    this
                },
                disabled: function() {
                    return ! j
                },
                lock: function() {
                    return k = b,
                    d || m.disable(),
                    this
                },
                locked: function() {
                    return ! k
                },
                fireWith: function(a, b) {
                    return b = b || [],
                    b = [a, b.slice ? b.slice() : b],
                    !j || f && !k || (c ? k.push(b) : l(b)),
                    this
                },
                fire: function() {
                    return m.fireWith(this, arguments),
                    this
                },
                fired: function() {
                    return !! f
                }
            };
            return m
        },
        ia.extend({
            Deferred: function(a) {
                var b = [["resolve", "done", ia.Callbacks("once memory"), "resolved"], ["reject", "fail", ia.Callbacks("once memory"), "rejected"], ["notify", "progress", ia.Callbacks("memory")]],
                c = "pending",
                d = {
                    state: function() {
                        return c
                    },
                    always: function() {
                        return e.done(arguments).fail(arguments),
                        this
                    },
                    then: function() {
                        var a = arguments;
                        return ia.Deferred(function(c) {
                            ia.each(b,
                            function(b, f) {
                                var g = f[0],
                                h = ia.isFunction(a[b]) && a[b];
                                e[f[1]](function() {
                                    var a = h && h.apply(this, arguments);
                                    a && ia.isFunction(a.promise) ? a.promise().done(c.resolve).fail(c.reject).progress(c.notify) : c[g + "With"](this === d ? c.promise() : this, h ? [a] : arguments)
                                })
                            }),
                            a = null
                        }).promise()
                    },
                    promise: function(a) {
                        return null != a ? ia.extend(a, d) : d
                    }
                },
                e = {};
                return d.pipe = d.then,
                ia.each(b,
                function(a, f) {
                    var g = f[2],
                    h = f[3];
                    d[f[1]] = g.add,
                    h && g.add(function() {
                        c = h
                    },
                    b[1 ^ a][2].disable, b[2][2].lock),
                    e[f[0]] = function() {
                        return e[f[0] + "With"](this === e ? d: this, arguments),
                        this
                    },
                    e[f[0] + "With"] = g.fireWith
                }),
                d.promise(e),
                a && a.call(e, e),
                e
            },
            when: function(a) {
                var b, c, d, e = 0,
                f = da.call(arguments),
                g = f.length,
                h = 1 !== g || a && ia.isFunction(a.promise) ? g: 0,
                i = 1 === h ? a: ia.Deferred(),
                j = function(a, c, d) {
                    return function(e) {
                        c[a] = this,
                        d[a] = arguments.length > 1 ? da.call(arguments) : e,
                        d === b ? i.notifyWith(c, d) : --h || i.resolveWith(c, d)
                    }
                };
                if (g > 1) for (b = new Array(g), c = new Array(g), d = new Array(g); g > e; e++) f[e] && ia.isFunction(f[e].promise) ? f[e].promise().done(j(e, d, f)).fail(i.reject).progress(j(e, c, b)) : --h;
                return h || i.resolveWith(d, f),
                i.promise()
            }
        }),
        ia.support = function(b) {
            var c, d, e, f, g, h, i, j, k, l = W.createElement("div");
            if (l.setAttribute("className", "t"), l.innerHTML = "  <link/><table></table><a href='/a'>a</a><input type='checkbox'/>", c = l.getElementsByTagName("*"), d = l.getElementsByTagName("a")[0], !c || !d || !c.length) return b;
            f = W.createElement("select"),
            h = f.appendChild(W.createElement("option")),
            e = l.getElementsByTagName("input")[0],
            d.style.cssText = "top:1px;float:left;opacity:.5",
            b.getSetAttribute = "t" !== l.className,
            b.leadingWhitespace = 3 === l.firstChild.nodeType,
            b.tbody = !l.getElementsByTagName("tbody").length,
            b.htmlSerialize = !!l.getElementsByTagName("link").length,
            b.style = /top/.test(d.getAttribute("style")),
            b.hrefNormalized = "/a" === d.getAttribute("href"),
            b.opacity = /^0.5/.test(d.style.opacity),
            b.cssFloat = !!d.style.cssFloat,
            b.checkOn = !!e.value,
            b.optSelected = h.selected,
            b.enctype = !!W.createElement("form").enctype,
            b.html5Clone = "<:nav></:nav>" !== W.createElement("nav").cloneNode(!0).outerHTML,
            b.boxModel = "CSS1Compat" === W.compatMode,
            b.inlineBlockNeedsLayout = !1,
            b.shrinkWrapBlocks = !1,
            b.pixelPosition = !1,
            b.deleteExpando = !0,
            b.noCloneEvent = !0,
            b.reliableMarginRight = !0,
            b.boxSizingReliable = !0,
            e.checked = !0,
            b.noCloneChecked = e.cloneNode(!0).checked,
            f.disabled = !0,
            b.optDisabled = !h.disabled;
            try {
                delete l.test
            } catch(m) {
                b.deleteExpando = !1
            }
            e = W.createElement("input"),
            e.setAttribute("value", ""),
            b.input = "" === e.getAttribute("value"),
            e.value = "t",
            e.setAttribute("type", "radio"),
            b.radioValue = "t" === e.value,
            e.setAttribute("checked", "t"),
            e.setAttribute("name", "t"),
            g = W.createDocumentFragment(),
            g.appendChild(e),
            b.appendChecked = e.checked,
            b.checkClone = g.cloneNode(!0).cloneNode(!0).lastChild.checked,
            l.attachEvent && (l.attachEvent("onclick",
            function() {
                b.noCloneEvent = !1
            }), l.cloneNode(!0).click());
            for (k in {
                submit: !0,
                change: !0,
                focusin: !0
            }) l.setAttribute(i = "on" + k, "t"),
            b[k + "Bubbles"] = i in a || l.attributes[i].expando === !1;
            return l.style.backgroundClip = "content-box",
            l.cloneNode(!0).style.backgroundClip = "",
            b.clearCloneStyle = "content-box" === l.style.backgroundClip,
            ia(function() {
                var c, d, e, f = "padding:0;margin:0;border:0;display:block;box-sizing:content-box;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;",
                g = W.getElementsByTagName("body")[0];
                g && (c = W.createElement("div"), c.style.cssText = "border:0;width:0;height:0;position:absolute;top:0;left:-9999px;margin-top:1px", g.appendChild(c).appendChild(l), l.innerHTML = "<table><tr><td></td><td>t</td></tr></table>", e = l.getElementsByTagName("td"), e[0].style.cssText = "padding:0;margin:0;border:0;display:none", j = 0 === e[0].offsetHeight, e[0].style.display = "", e[1].style.display = "none", b.reliableHiddenOffsets = j && 0 === e[0].offsetHeight, l.innerHTML = "", l.style.cssText = "box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;padding:1px;border:1px;display:block;width:4px;margin-top:1%;position:absolute;top:1%;", b.boxSizing = 4 === l.offsetWidth, b.doesNotIncludeMarginInBodyOffset = 1 !== g.offsetTop, a.getComputedStyle && (b.pixelPosition = "1%" !== (a.getComputedStyle(l, null) || {}).top, b.boxSizingReliable = "4px" === (a.getComputedStyle(l, null) || {
                    width: "4px"
                }).width, d = l.appendChild(W.createElement("div")), d.style.cssText = l.style.cssText = f, d.style.marginRight = d.style.width = "0", l.style.width = "1px", b.reliableMarginRight = !parseFloat((a.getComputedStyle(d, null) || {}).marginRight)), typeof l.style.zoom !== U && (l.innerHTML = "", l.style.cssText = f + "width:1px;padding:1px;display:inline;zoom:1", b.inlineBlockNeedsLayout = 3 === l.offsetWidth, l.style.display = "block", l.innerHTML = "<div></div>", l.firstChild.style.width = "5px", b.shrinkWrapBlocks = 3 !== l.offsetWidth, b.inlineBlockNeedsLayout && (g.style.zoom = 1)), g.removeChild(c), c = l = e = d = null)
            }),
            c = f = g = h = d = e = null,
            b
        } ({});
        var ya = /(?:\{[\s\S]*\}|\[[\s\S]*\])$/,
        za = /([A-Z])/g;
        ia.extend({
            cache: {},
            noData: {
                applet: !0,
                embed: !0,
                object: "clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
            },
            hasData: function(a) {
                return a = a.nodeType ? ia.cache[a[ia.expando]] : a[ia.expando],
                !!a && !i(a)
            },
            data: function(a, b, c) {
                return f(a, b, c)
            },
            removeData: function(a, b) {
                return g(a, b)
            },
            _data: function(a, b, c) {
                return f(a, b, c, !0)
            },
            _removeData: function(a, b) {
                return g(a, b, !0)
            },
            acceptData: function(a) {
                if (a.nodeType && 1 !== a.nodeType && 9 !== a.nodeType) return ! 1;
                var b = a.nodeName && ia.noData[a.nodeName.toLowerCase()];
                return ! b || b !== !0 && a.getAttribute("classid") === b
            }
        }),
        ia.fn.extend({
            data: function(a, c) {
                var d, e, f = null,
                g = 0,
                i = this[0];
                if (a === b) {
                    if (this.length && (f = ia.data(i), 1 === i.nodeType && !ia._data(i, "parsedAttrs"))) {
                        for (d = i.attributes; g < d.length; g++) e = d[g].name,
                        0 === e.indexOf("data-") && (e = ia.camelCase(e.slice(5)), h(i, e, f[e]));
                        ia._data(i, "parsedAttrs", !0)
                    }
                    return f
                }
                return "object" == typeof a ? this.each(function() {
                    ia.data(this, a)
                }) : arguments.length > 1 ? this.each(function() {
                    ia.data(this, a, c)
                }) : i ? h(i, a, ia.data(i, a)) : null
            },
            removeData: function(a) {
                return this.each(function() {
                    ia.removeData(this, a)
                })
            }
        }),
        ia.extend({
            queue: function(a, b, c) {
                var d;
                return a ? (b = (b || "fx") + "queue", d = ia._data(a, b), c && (!d || ia.isArray(c) ? d = ia._data(a, b, ia.makeArray(c)) : d.push(c)), d || []) : void 0
            },
            dequeue: function(a, b) {
                b = b || "fx";
                var c = ia.queue(a, b),
                d = c.length,
                e = c.shift(),
                f = ia._queueHooks(a, b),
                g = function() {
                    ia.dequeue(a, b)
                };
                "inprogress" === e && (e = c.shift(), d--),
                f.cur = e,
                e && ("fx" === b && c.unshift("inprogress"), delete f.stop, e.call(a, g, f)),
                !d && f && f.empty.fire()
            },
            _queueHooks: function(a, b) {
                var c = b + "queueHooks";
                return ia._data(a, c) || ia._data(a, c, {
                    empty: ia.Callbacks("once memory").add(function() {
                        ia._removeData(a, b + "queue"),
                        ia._removeData(a, c)
                    })
                })
            }
        }),
        ia.fn.extend({
            queue: function(a, c) {
                var d = 2;
                return "string" != typeof a && (c = a, a = "fx", d--),
                arguments.length < d ? ia.queue(this[0], a) : c === b ? this: this.each(function() {
                    var b = ia.queue(this, a, c);
                    ia._queueHooks(this, a),
                    "fx" === a && "inprogress" !== b[0] && ia.dequeue(this, a)
                })
            },
            dequeue: function(a) {
                return this.each(function() {
                    ia.dequeue(this, a)
                })
            },
            delay: function(a, b) {
                return a = ia.fx ? ia.fx.speeds[a] || a: a,
                b = b || "fx",
                this.queue(b,
                function(b, c) {
                    var d = setTimeout(b, a);
                    c.stop = function() {
                        clearTimeout(d)
                    }
                })
            },
            clearQueue: function(a) {
                return this.queue(a || "fx", [])
            },
            promise: function(a, c) {
                var d, e = 1,
                f = ia.Deferred(),
                g = this,
                h = this.length,
                i = function() {--e || f.resolveWith(g, [g])
                };
                for ("string" != typeof a && (c = a, a = b), a = a || "fx"; h--;) d = ia._data(g[h], a + "queueHooks"),
                d && d.empty && (e++, d.empty.add(i));
                return i(),
                f.promise(c)
            }
        });
        var Aa, Ba, Ca = /[\t\r\n]/g,
        Da = /\r/g,
        Ea = /^(?:input|select|textarea|button|object)$/i,
        Fa = /^(?:a|area)$/i,
        Ga = /^(?:checked|selected|autofocus|autoplay|async|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped)$/i,
        Ha = /^(?:checked|selected)$/i,
        Ia = ia.support.getSetAttribute,
        Ja = ia.support.input;
        ia.fn.extend({
            attr: function(a, b) {
                return ia.access(this, ia.attr, a, b, arguments.length > 1)
            },
            removeAttr: function(a) {
                return this.each(function() {
                    ia.removeAttr(this, a)
                })
            },
            prop: function(a, b) {
                return ia.access(this, ia.prop, a, b, arguments.length > 1)
            },
            removeProp: function(a) {
                return a = ia.propFix[a] || a,
                this.each(function() {
                    try {
                        this[a] = b,
                        delete this[a]
                    } catch(c) {}
                })
            },
            addClass: function(a) {
                var b, c, d, e, f, g = 0,
                h = this.length,
                i = "string" == typeof a && a;
                if (ia.isFunction(a)) return this.each(function(b) {
                    ia(this).addClass(a.call(this, b, this.className))
                });
                if (i) for (b = (a || "").match(ka) || []; h > g; g++) if (c = this[g], d = 1 === c.nodeType && (c.className ? (" " + c.className + " ").replace(Ca, " ") : " ")) {
                    for (f = 0; e = b[f++];) d.indexOf(" " + e + " ") < 0 && (d += e + " ");
                    c.className = ia.trim(d)
                }
                return this
            },
            removeClass: function(a) {
                var b, c, d, e, f, g = 0,
                h = this.length,
                i = 0 === arguments.length || "string" == typeof a && a;
                if (ia.isFunction(a)) return this.each(function(b) {
                    ia(this).removeClass(a.call(this, b, this.className))
                });
                if (i) for (b = (a || "").match(ka) || []; h > g; g++) if (c = this[g], d = 1 === c.nodeType && (c.className ? (" " + c.className + " ").replace(Ca, " ") : "")) {
                    for (f = 0; e = b[f++];) for (; d.indexOf(" " + e + " ") >= 0;) d = d.replace(" " + e + " ", " ");
                    c.className = a ? ia.trim(d) : ""
                }
                return this
            },
            toggleClass: function(a, b) {
                var c = typeof a,
                d = "boolean" == typeof b;
                return ia.isFunction(a) ? this.each(function(c) {
                    ia(this).toggleClass(a.call(this, c, this.className, b), b)
                }) : this.each(function() {
                    if ("string" === c) for (var e, f = 0,
                    g = ia(this), h = b, i = a.match(ka) || []; e = i[f++];) h = d ? h: !g.hasClass(e),
                    g[h ? "addClass": "removeClass"](e);
                    else(c === U || "boolean" === c) && (this.className && ia._data(this, "__className__", this.className), this.className = this.className || a === !1 ? "": ia._data(this, "__className__") || "")
                })
            },
            hasClass: function(a) {
                for (var b = " " + a + " ",
                c = 0,
                d = this.length; d > c; c++) if (1 === this[c].nodeType && (" " + this[c].className + " ").replace(Ca, " ").indexOf(b) >= 0) return ! 0;
                return ! 1
            },
            val: function(a) {
                var c, d, e, f = this[0]; {
                    if (arguments.length) return e = ia.isFunction(a),
                    this.each(function(c) {
                        var f, g = ia(this);
                        1 === this.nodeType && (f = e ? a.call(this, c, g.val()) : a, null == f ? f = "": "number" == typeof f ? f += "": ia.isArray(f) && (f = ia.map(f,
                        function(a) {
                            return null == a ? "": a + ""
                        })), d = ia.valHooks[this.type] || ia.valHooks[this.nodeName.toLowerCase()], d && "set" in d && d.set(this, f, "value") !== b || (this.value = f))
                    });
                    if (f) return d = ia.valHooks[f.type] || ia.valHooks[f.nodeName.toLowerCase()],
                    d && "get" in d && (c = d.get(f, "value")) !== b ? c: (c = f.value, "string" == typeof c ? c.replace(Da, "") : null == c ? "": c)
                }
            }
        }),
        ia.extend({
            valHooks: {
                option: {
                    get: function(a) {
                        var b = a.attributes.value;
                        return ! b || b.specified ? a.value: a.text
                    }
                },
                select: {
                    get: function(a) {
                        for (var b, c, d = a.options,
                        e = a.selectedIndex,
                        f = "select-one" === a.type || 0 > e,
                        g = f ? null: [], h = f ? e + 1 : d.length, i = 0 > e ? h: f ? e: 0; h > i; i++) if (c = d[i], !(!c.selected && i !== e || (ia.support.optDisabled ? c.disabled: null !== c.getAttribute("disabled")) || c.parentNode.disabled && ia.nodeName(c.parentNode, "optgroup"))) {
                            if (b = ia(c).val(), f) return b;
                            g.push(b)
                        }
                        return g
                    },
                    set: function(a, b) {
                        for (var c, d, e = a.options,
                        f = ia.makeArray(b), g = e.length; g--;) d = e[g],
                        (d.selected = ia.inArray(ia(d).val(), f) >= 0) && (c = !0);
                        return c || (a.selectedIndex = -1),
                        f
                    }
                }
            },
            attr: function(a, c, d) {
                var e, f, g, h = a.nodeType;
                if (a && 3 !== h && 8 !== h && 2 !== h) return typeof a.getAttribute === U ? ia.prop(a, c, d) : (f = 1 !== h || !ia.isXMLDoc(a), f && (c = c.toLowerCase(), e = ia.attrHooks[c] || (Ga.test(c) ? Ba: Aa)), d === b ? e && f && "get" in e && null !== (g = e.get(a, c)) ? g: (typeof a.getAttribute !== U && (g = a.getAttribute(c)), null == g ? b: g) : null !== d ? e && f && "set" in e && (g = e.set(a, d, c)) !== b ? g: (a.setAttribute(c, d + ""), d) : void ia.removeAttr(a, c))
            },
            removeAttr: function(a, b) {
                var c, d, e = 0,
                f = b && b.match(ka);
                if (f && 1 === a.nodeType) for (; c = f[e++];) d = ia.propFix[c] || c,
                Ga.test(c) ? !Ia && Ha.test(c) ? a[ia.camelCase("default-" + c)] = a[d] = !1 : a[d] = !1 : ia.attr(a, c, ""),
                a.removeAttribute(Ia ? c: d)
            },
            attrHooks: {
                type: {
                    set: function(a, b) {
                        if (!ia.support.radioValue && "radio" === b && ia.nodeName(a, "input")) {
                            var c = a.value;
                            return a.setAttribute("type", b),
                            c && (a.value = c),
                            b
                        }
                    }
                }
            },
            propFix: {
                tabindex: "tabIndex",
                readonly: "readOnly",
                "for": "htmlFor",
                "class": "className",
                maxlength: "maxLength",
                cellspacing: "cellSpacing",
                cellpadding: "cellPadding",
                rowspan: "rowSpan",
                colspan: "colSpan",
                usemap: "useMap",
                frameborder: "frameBorder",
                contenteditable: "contentEditable"
            },
            prop: function(a, c, d) {
                var e, f, g, h = a.nodeType;
                if (a && 3 !== h && 8 !== h && 2 !== h) return g = 1 !== h || !ia.isXMLDoc(a),
                g && (c = ia.propFix[c] || c, f = ia.propHooks[c]),
                d !== b ? f && "set" in f && (e = f.set(a, d, c)) !== b ? e: a[c] = d: f && "get" in f && null !== (e = f.get(a, c)) ? e: a[c]
            },
            propHooks: {
                tabIndex: {
                    get: function(a) {
                        var c = a.getAttributeNode("tabindex");
                        return c && c.specified ? parseInt(c.value, 10) : Ea.test(a.nodeName) || Fa.test(a.nodeName) && a.href ? 0 : b
                    }
                }
            }
        }),
        Ba = {
            get: function(a, c) {
                var d = ia.prop(a, c),
                e = "boolean" == typeof d && a.getAttribute(c),
                f = "boolean" == typeof d ? Ja && Ia ? null != e: Ha.test(c) ? a[ia.camelCase("default-" + c)] : !!e: a.getAttributeNode(c);
                return f && f.value !== !1 ? c.toLowerCase() : b
            },
            set: function(a, b, c) {
                return b === !1 ? ia.removeAttr(a, c) : Ja && Ia || !Ha.test(c) ? a.setAttribute(!Ia && ia.propFix[c] || c, c) : a[ia.camelCase("default-" + c)] = a[c] = !0,
                c
            }
        },
        Ja && Ia || (ia.attrHooks.value = {
            get: function(a, c) {
                var d = a.getAttributeNode(c);
                return ia.nodeName(a, "input") ? a.defaultValue: d && d.specified ? d.value: b
            },
            set: function(a, b, c) {
                return ia.nodeName(a, "input") ? void(a.defaultValue = b) : Aa && Aa.set(a, b, c)
            }
        }),
        Ia || (Aa = ia.valHooks.button = {
            get: function(a, c) {
                var d = a.getAttributeNode(c);
                return d && ("id" === c || "name" === c || "coords" === c ? "" !== d.value: d.specified) ? d.value: b
            },
            set: function(a, c, d) {
                var e = a.getAttributeNode(d);
                return e || a.setAttributeNode(e = a.ownerDocument.createAttribute(d)),
                e.value = c += "",
                "value" === d || c === a.getAttribute(d) ? c: b
            }
        },
        ia.attrHooks.contenteditable = {
            get: Aa.get,
            set: function(a, b, c) {
                Aa.set(a, "" === b ? !1 : b, c)
            }
        },
        ia.each(["width", "height"],
        function(a, b) {
            ia.attrHooks[b] = ia.extend(ia.attrHooks[b], {
                set: function(a, c) {
                    return "" === c ? (a.setAttribute(b, "auto"), c) : void 0
                }
            })
        })),
        ia.support.hrefNormalized || (ia.each(["href", "src", "width", "height"],
        function(a, c) {
            ia.attrHooks[c] = ia.extend(ia.attrHooks[c], {
                get: function(a) {
                    var d = a.getAttribute(c, 2);
                    return null == d ? b: d
                }
            })
        }), ia.each(["href", "src"],
        function(a, b) {
            ia.propHooks[b] = {
                get: function(a) {
                    return a.getAttribute(b, 4)
                }
            }
        })),
        ia.support.style || (ia.attrHooks.style = {
            get: function(a) {
                return a.style.cssText || b
            },
            set: function(a, b) {
                return a.style.cssText = b + ""
            }
        }),
        ia.support.optSelected || (ia.propHooks.selected = ia.extend(ia.propHooks.selected, {
            get: function(a) {
                var b = a.parentNode;
                return b && (b.selectedIndex, b.parentNode && b.parentNode.selectedIndex),
                null
            }
        })),
        ia.support.enctype || (ia.propFix.enctype = "encoding"),
        ia.support.checkOn || ia.each(["radio", "checkbox"],
        function() {
            ia.valHooks[this] = {
                get: function(a) {
                    return null === a.getAttribute("value") ? "on": a.value
                }
            }
        }),
        ia.each(["radio", "checkbox"],
        function() {
            ia.valHooks[this] = ia.extend(ia.valHooks[this], {
                set: function(a, b) {
                    return ia.isArray(b) ? a.checked = ia.inArray(ia(a).val(), b) >= 0 : void 0
                }
            })
        });
        var Ka = /^(?:input|select|textarea)$/i,
        La = /^key/,
        Ma = /^(?:mouse|contextmenu)|click/,
        Na = /^(?:focusinfocus|focusoutblur)$/,
        Oa = /^([^.]*)(?:\.(.+)|)$/;
        ia.event = {
            global: {},
            add: function(a, c, d, e, f) {
                var g, h, i, j, k, l, m, n, o, p, q, r = ia._data(a);
                if (r) {
                    for (d.handler && (j = d, d = j.handler, f = j.selector), d.guid || (d.guid = ia.guid++), (h = r.events) || (h = r.events = {}), (l = r.handle) || (l = r.handle = function(a) {
                        return typeof ia === U || a && ia.event.triggered === a.type ? b: ia.event.dispatch.apply(l.elem, arguments)
                    },
                    l.elem = a), c = (c || "").match(ka) || [""], i = c.length; i--;) g = Oa.exec(c[i]) || [],
                    o = q = g[1],
                    p = (g[2] || "").split(".").sort(),
                    o && (k = ia.event.special[o] || {},
                    o = (f ? k.delegateType: k.bindType) || o, k = ia.event.special[o] || {},
                    m = ia.extend({
                        type: o,
                        origType: q,
                        data: e,
                        handler: d,
                        guid: d.guid,
                        selector: f,
                        needsContext: f && ia.expr.match.needsContext.test(f),
                        namespace: p.join(".")
                    },
                    j), (n = h[o]) || (n = h[o] = [], n.delegateCount = 0, k.setup && k.setup.call(a, e, p, l) !== !1 || (a.addEventListener ? a.addEventListener(o, l, !1) : a.attachEvent && a.attachEvent("on" + o, l))), k.add && (k.add.call(a, m), m.handler.guid || (m.handler.guid = d.guid)), f ? n.splice(n.delegateCount++, 0, m) : n.push(m), ia.event.global[o] = !0);
                    a = null
                }
            },
            remove: function(a, b, c, d, e) {
                var f, g, h, i, j, k, l, m, n, o, p, q = ia.hasData(a) && ia._data(a);
                if (q && (k = q.events)) {
                    for (b = (b || "").match(ka) || [""], j = b.length; j--;) if (h = Oa.exec(b[j]) || [], n = p = h[1], o = (h[2] || "").split(".").sort(), n) {
                        for (l = ia.event.special[n] || {},
                        n = (d ? l.delegateType: l.bindType) || n, m = k[n] || [], h = h[2] && new RegExp("(^|\\.)" + o.join("\\.(?:.*\\.|)") + "(\\.|$)"), i = f = m.length; f--;) g = m[f],
                        !e && p !== g.origType || c && c.guid !== g.guid || h && !h.test(g.namespace) || d && d !== g.selector && ("**" !== d || !g.selector) || (m.splice(f, 1), g.selector && m.delegateCount--, l.remove && l.remove.call(a, g));
                        i && !m.length && (l.teardown && l.teardown.call(a, o, q.handle) !== !1 || ia.removeEvent(a, n, q.handle), delete k[n])
                    } else for (n in k) ia.event.remove(a, n + b[j], c, d, !0);
                    ia.isEmptyObject(k) && (delete q.handle, ia._removeData(a, "events"))
                }
            },
            trigger: function(c, d, e, f) {
                var g, h, i, j, k, l, m, n = [e || W],
                o = ga.call(c, "type") ? c.type: c,
                p = ga.call(c, "namespace") ? c.namespace.split(".") : [];
                if (i = l = e = e || W, 3 !== e.nodeType && 8 !== e.nodeType && !Na.test(o + ia.event.triggered) && (o.indexOf(".") >= 0 && (p = o.split("."), o = p.shift(), p.sort()), h = o.indexOf(":") < 0 && "on" + o, c = c[ia.expando] ? c: new ia.Event(o, "object" == typeof c && c), c.isTrigger = !0, c.namespace = p.join("."), c.namespace_re = c.namespace ? new RegExp("(^|\\.)" + p.join("\\.(?:.*\\.|)") + "(\\.|$)") : null, c.result = b, c.target || (c.target = e), d = null == d ? [c] : ia.makeArray(d, [c]), k = ia.event.special[o] || {},
                f || !k.trigger || k.trigger.apply(e, d) !== !1)) {
                    if (!f && !k.noBubble && !ia.isWindow(e)) {
                        for (j = k.delegateType || o, Na.test(j + o) || (i = i.parentNode); i; i = i.parentNode) n.push(i),
                        l = i;
                        l === (e.ownerDocument || W) && n.push(l.defaultView || l.parentWindow || a)
                    }
                    for (m = 0; (i = n[m++]) && !c.isPropagationStopped();) c.type = m > 1 ? j: k.bindType || o,
                    g = (ia._data(i, "events") || {})[c.type] && ia._data(i, "handle"),
                    g && g.apply(i, d),
                    g = h && i[h],
                    g && ia.acceptData(i) && g.apply && g.apply(i, d) === !1 && c.preventDefault();
                    if (c.type = o, !(f || c.isDefaultPrevented() || k._default && k._default.apply(e.ownerDocument, d) !== !1 || "click" === o && ia.nodeName(e, "a") || !ia.acceptData(e) || !h || !e[o] || ia.isWindow(e))) {
                        l = e[h],
                        l && (e[h] = null),
                        ia.event.triggered = o;
                        try {
                            e[o]()
                        } catch(q) {}
                        ia.event.triggered = b,
                        l && (e[h] = l)
                    }
                    return c.result
                }
            },
            dispatch: function(a) {
                a = ia.event.fix(a);
                var c, d, e, f, g, h = [],
                i = da.call(arguments),
                j = (ia._data(this, "events") || {})[a.type] || [],
                k = ia.event.special[a.type] || {};
                if (i[0] = a, a.delegateTarget = this, !k.preDispatch || k.preDispatch.call(this, a) !== !1) {
                    for (h = ia.event.handlers.call(this, a, j), c = 0; (f = h[c++]) && !a.isPropagationStopped();) for (a.currentTarget = f.elem, g = 0; (e = f.handlers[g++]) && !a.isImmediatePropagationStopped();)(!a.namespace_re || a.namespace_re.test(e.namespace)) && (a.handleObj = e, a.data = e.data, d = ((ia.event.special[e.origType] || {}).handle || e.handler).apply(f.elem, i), d !== b && (a.result = d) === !1 && (a.preventDefault(), a.stopPropagation()));
                    return k.postDispatch && k.postDispatch.call(this, a),
                    a.result
                }
            },
            handlers: function(a, c) {
                var d, e, f, g, h = [],
                i = c.delegateCount,
                j = a.target;
                if (i && j.nodeType && (!a.button || "click" !== a.type)) for (; j != this; j = j.parentNode || this) if (1 === j.nodeType && (j.disabled !== !0 || "click" !== a.type)) {
                    for (f = [], g = 0; i > g; g++) e = c[g],
                    d = e.selector + " ",
                    f[d] === b && (f[d] = e.needsContext ? ia(d, this).index(j) >= 0 : ia.find(d, this, null, [j]).length),
                    f[d] && f.push(e);
                    f.length && h.push({
                        elem: j,
                        handlers: f
                    })
                }
                return i < c.length && h.push({
                    elem: this,
                    handlers: c.slice(i)
                }),
                h
            },
            fix: function(a) {
                if (a[ia.expando]) return a;
                var b, c, d, e = a.type,
                f = a,
                g = this.fixHooks[e];
                for (g || (this.fixHooks[e] = g = Ma.test(e) ? this.mouseHooks: La.test(e) ? this.keyHooks: {}), d = g.props ? this.props.concat(g.props) : this.props, a = new ia.Event(f), b = d.length; b--;) c = d[b],
                a[c] = f[c];
                return a.target || (a.target = f.srcElement || W),
                3 === a.target.nodeType && (a.target = a.target.parentNode),
                a.metaKey = !!a.metaKey,
                g.filter ? g.filter(a, f) : a
            },
            props: "altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),
            fixHooks: {},
            keyHooks: {
                props: "char charCode key keyCode".split(" "),
                filter: function(a, b) {
                    return null == a.which && (a.which = null != b.charCode ? b.charCode: b.keyCode),
                    a
                }
            },
            mouseHooks: {
                props: "button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),
                filter: function(a, c) {
                    var d, e, f, g = c.button,
                    h = c.fromElement;
                    return null == a.pageX && null != c.clientX && (e = a.target.ownerDocument || W, f = e.documentElement, d = e.body, a.pageX = c.clientX + (f && f.scrollLeft || d && d.scrollLeft || 0) - (f && f.clientLeft || d && d.clientLeft || 0), a.pageY = c.clientY + (f && f.scrollTop || d && d.scrollTop || 0) - (f && f.clientTop || d && d.clientTop || 0)),
                    !a.relatedTarget && h && (a.relatedTarget = h === a.target ? c.toElement: h),
                    a.which || g === b || (a.which = 1 & g ? 1 : 2 & g ? 3 : 4 & g ? 2 : 0),
                    a
                }
            },
            special: {
                load: {
                    noBubble: !0
                },
                click: {
                    trigger: function() {
                        return ia.nodeName(this, "input") && "checkbox" === this.type && this.click ? (this.click(), !1) : void 0
                    }
                },
                focus: {
                    trigger: function() {
                        if (this !== W.activeElement && this.focus) try {
                            return this.focus(),
                            !1
                        } catch(a) {}
                    },
                    delegateType: "focusin"
                },
                blur: {
                    trigger: function() {
                        return this === W.activeElement && this.blur ? (this.blur(), !1) : void 0
                    },
                    delegateType: "focusout"
                },
                beforeunload: {
                    postDispatch: function(a) {
                        a.result !== b && (a.originalEvent.returnValue = a.result)
                    }
                }
            },
            simulate: function(a, b, c, d) {
                var e = ia.extend(new ia.Event, c, {
                    type: a,
                    isSimulated: !0,
                    originalEvent: {}
                });
                d ? ia.event.trigger(e, null, b) : ia.event.dispatch.call(b, e),
                e.isDefaultPrevented() && c.preventDefault()
            }
        },
        ia.removeEvent = W.removeEventListener ?
        function(a, b, c) {
            a.removeEventListener && a.removeEventListener(b, c, !1)
        }: function(a, b, c) {
            var d = "on" + b;
            a.detachEvent && (typeof a[d] === U && (a[d] = null), a.detachEvent(d, c))
        },
        ia.Event = function(a, b) {
            return this instanceof ia.Event ? (a && a.type ? (this.originalEvent = a, this.type = a.type, this.isDefaultPrevented = a.defaultPrevented || a.returnValue === !1 || a.getPreventDefault && a.getPreventDefault() ? j: k) : this.type = a, b && ia.extend(this, b), this.timeStamp = a && a.timeStamp || ia.now(), void(this[ia.expando] = !0)) : new ia.Event(a, b)
        },
        ia.Event.prototype = {
            isDefaultPrevented: k,
            isPropagationStopped: k,
            isImmediatePropagationStopped: k,
            preventDefault: function() {
                var a = this.originalEvent;
                this.isDefaultPrevented = j,
                a && (a.preventDefault ? a.preventDefault() : a.returnValue = !1)
            },
            stopPropagation: function() {
                var a = this.originalEvent;
                this.isPropagationStopped = j,
                a && (a.stopPropagation && a.stopPropagation(), a.cancelBubble = !0)
            },
            stopImmediatePropagation: function() {
                this.isImmediatePropagationStopped = j,
                this.stopPropagation()
            }
        },
        ia.each({
            mouseenter: "mouseover",
            mouseleave: "mouseout"
        },
        function(a, b) {
            ia.event.special[a] = {
                delegateType: b,
                bindType: b,
                handle: function(a) {
                    var c, d = this,
                    e = a.relatedTarget,
                    f = a.handleObj;
                    return (!e || e !== d && !ia.contains(d, e)) && (a.type = f.origType, c = f.handler.apply(this, arguments), a.type = b),
                    c
                }
            }
        }),
        ia.support.submitBubbles || (ia.event.special.submit = {
            setup: function() {
                return ia.nodeName(this, "form") ? !1 : void ia.event.add(this, "click._submit keypress._submit",
                function(a) {
                    var c = a.target,
                    d = ia.nodeName(c, "input") || ia.nodeName(c, "button") ? c.form: b;
                    d && !ia._data(d, "submitBubbles") && (ia.event.add(d, "submit._submit",
                    function(a) {
                        a._submit_bubble = !0
                    }), ia._data(d, "submitBubbles", !0))
                })
            },
            postDispatch: function(a) {
                a._submit_bubble && (delete a._submit_bubble, this.parentNode && !a.isTrigger && ia.event.simulate("submit", this.parentNode, a, !0))
            },
            teardown: function() {
                return ia.nodeName(this, "form") ? !1 : void ia.event.remove(this, "._submit")
            }
        }),
        ia.support.changeBubbles || (ia.event.special.change = {
            setup: function() {
                return Ka.test(this.nodeName) ? (("checkbox" === this.type || "radio" === this.type) && (ia.event.add(this, "propertychange._change",
                function(a) {
                    "checked" === a.originalEvent.propertyName && (this._just_changed = !0)
                }), ia.event.add(this, "click._change",
                function(a) {
                    this._just_changed && !a.isTrigger && (this._just_changed = !1),
                    ia.event.simulate("change", this, a, !0)
                })), !1) : void ia.event.add(this, "beforeactivate._change",
                function(a) {
                    var b = a.target;
                    Ka.test(b.nodeName) && !ia._data(b, "changeBubbles") && (ia.event.add(b, "change._change",
                    function(a) { ! this.parentNode || a.isSimulated || a.isTrigger || ia.event.simulate("change", this.parentNode, a, !0)
                    }), ia._data(b, "changeBubbles", !0))
                })
            },
            handle: function(a) {
                var b = a.target;
                return this !== b || a.isSimulated || a.isTrigger || "radio" !== b.type && "checkbox" !== b.type ? a.handleObj.handler.apply(this, arguments) : void 0
            },
            teardown: function() {
                return ia.event.remove(this, "._change"),
                !Ka.test(this.nodeName)
            }
        }),
        ia.support.focusinBubbles || ia.each({
            focus: "focusin",
            blur: "focusout"
        },
        function(a, b) {
            var c = 0,
            d = function(a) {
                ia.event.simulate(b, a.target, ia.event.fix(a), !0)
            };
            ia.event.special[b] = {
                setup: function() {
                    0 === c++&&W.addEventListener(a, d, !0)
                },
                teardown: function() {
                    0 === --c && W.removeEventListener(a, d, !0)
                }
            }
        }),
        ia.fn.extend({
            on: function(a, c, d, e, f) {
                var g, h;
                if ("object" == typeof a) {
                    "string" != typeof c && (d = d || c, c = b);
                    for (g in a) this.on(g, c, d, a[g], f);
                    return this
                }
                if (null == d && null == e ? (e = c, d = c = b) : null == e && ("string" == typeof c ? (e = d, d = b) : (e = d, d = c, c = b)), e === !1) e = k;
                else if (!e) return this;
                return 1 === f && (h = e, e = function(a) {
                    return ia().off(a),
                    h.apply(this, arguments)
                },
                e.guid = h.guid || (h.guid = ia.guid++)),
                this.each(function() {
                    ia.event.add(this, a, e, d, c)
                })
            },
            one: function(a, b, c, d) {
                return this.on(a, b, c, d, 1)
            },
            off: function(a, c, d) {
                var e, f;
                if (a && a.preventDefault && a.handleObj) return e = a.handleObj,
                ia(a.delegateTarget).off(e.namespace ? e.origType + "." + e.namespace: e.origType, e.selector, e.handler),
                this;
                if ("object" == typeof a) {
                    for (f in a) this.off(f, c, a[f]);
                    return this
                }
                return (c === !1 || "function" == typeof c) && (d = c, c = b),
                d === !1 && (d = k),
                this.each(function() {
                    ia.event.remove(this, a, d, c)
                })
            },
            bind: function(a, b, c) {
                return this.on(a, null, b, c)
            },
            unbind: function(a, b) {
                return this.off(a, null, b)
            },
            delegate: function(a, b, c, d) {
                return this.on(b, a, c, d)
            },
            undelegate: function(a, b, c) {
                return 1 === arguments.length ? this.off(a, "**") : this.off(b, a || "**", c)
            },
            trigger: function(a, b) {
                return this.each(function() {
                    ia.event.trigger(a, b, this)
                })
            },
            triggerHandler: function(a, b) {
                var c = this[0];
                return c ? ia.event.trigger(a, b, c, !0) : void 0
            }
        }),
        function(a, b) {
            function c(a) {
                return ua.test(a + "")
            }
            function d() {
                var a, b = [];
                return a = function(c, d) {
                    return b.push(c += " ") > A.cacheLength && delete a[b.shift()],
                    a[c] = d
                }
            }
            function e(a) {
                return a[O] = !0,
                a
            }
            function f(a) {
                var b = H.createElement("div");
                try {
                    return !! a(b)
                } catch(c) {
                    return ! 1
                } finally {
                    b.parentNode && b.parentNode.removeChild(b),
                    b = null
                }
            }
            function g(a, b, c, d) {
                var e, f, g, h, i, j, k, l, m, p;
                if ((b ? b.ownerDocument || b: P) !== H && G(b), b = b || H, c = c || [], !a || "string" != typeof a) return c;
                if (1 !== (h = b.nodeType) && 9 !== h) return [];
                if (J && !d) {
                    if (e = va.exec(a)) if (g = e[1]) {
                        if (9 === h) {
                            if (f = b.getElementById(g), !f || !f.parentNode) return c;
                            if (f.id === g) return c.push(f),
                            c
                        } else if (b.ownerDocument && (f = b.ownerDocument.getElementById(g)) && N(b, f) && f.id === g) return c.push(f),
                        c
                    } else {
                        if (e[2]) return ca.apply(c, b.getElementsByTagName(a)),
                        c;
                        if ((g = e[3]) && Q.getElementsByClassName && b.getElementsByClassName) return ca.apply(c, b.getElementsByClassName(g)),
                        c
                    }
                    if (Q.qsa && (!K || !K.test(a))) {
                        if (l = k = O, m = b, p = 9 === h && a, 1 === h && "object" !== b.nodeName.toLowerCase()) {
                            for (j = n(a), (k = b.getAttribute("id")) ? l = k.replace(ya, "\\$&") : b.setAttribute("id", l), l = "[id='" + l + "'] ", i = j.length; i--;) j[i] = l + o(j[i]);
                            m = pa.test(a) && b.parentNode || b,
                            p = j.join(",")
                        }
                        if (p) try {
                            return ca.apply(c, m.querySelectorAll(p)),
                            c
                        } catch(q) {} finally {
                            k || b.removeAttribute("id")
                        }
                    }
                }
                return w(a.replace(ma, "$1"), b, c, d)
            }
            function h(a, b) {
                var c = b && a,
                d = c && (~b.sourceIndex || Z) - (~a.sourceIndex || Z);
                if (d) return d;
                if (c) for (; c = c.nextSibling;) if (c === b) return - 1;
                return a ? 1 : -1
            }
            function i(a, c, d) {
                var e;
                return d ? b: (e = a.getAttributeNode(c)) && e.specified ? e.value: a[c] === !0 ? c.toLowerCase() : null
            }
            function j(a, c, d) {
                var e;
                return d ? b: e = a.getAttribute(c, "type" === c.toLowerCase() ? 1 : 2)
            }
            function k(a) {
                return function(b) {
                    var c = b.nodeName.toLowerCase();
                    return "input" === c && b.type === a
                }
            }
            function l(a) {
                return function(b) {
                    var c = b.nodeName.toLowerCase();
                    return ("input" === c || "button" === c) && b.type === a
                }
            }
            function m(a) {
                return e(function(b) {
                    return b = +b,
                    e(function(c, d) {
                        for (var e, f = a([], c.length, b), g = f.length; g--;) c[e = f[g]] && (c[e] = !(d[e] = c[e]))
                    })
                })
            }
            function n(a, b) {
                var c, d, e, f, h, i, j, k = U[a + " "];
                if (k) return b ? 0 : k.slice(0);
                for (h = a, i = [], j = A.preFilter; h;) { (!c || (d = na.exec(h))) && (d && (h = h.slice(d[0].length) || h), i.push(e = [])),
                    c = !1,
                    (d = oa.exec(h)) && (c = d.shift(), e.push({
                        value: c,
                        type: d[0].replace(ma, " ")
                    }), h = h.slice(c.length));
                    for (f in A.filter) ! (d = ta[f].exec(h)) || j[f] && !(d = j[f](d)) || (c = d.shift(), e.push({
                        value: c,
                        type: f,
                        matches: d
                    }), h = h.slice(c.length));
                    if (!c) break
                }
                return b ? h.length: h ? g.error(a) : U(a, i).slice(0)
            }
            function o(a) {
                for (var b = 0,
                c = a.length,
                d = ""; c > b; b++) d += a[b].value;
                return d
            }
            function p(a, b, c) {
                var d = b.dir,
                e = c && "parentNode" === d,
                f = S++;
                return b.first ?
                function(b, c, f) {
                    for (; b = b[d];) if (1 === b.nodeType || e) return a(b, c, f)
                }: function(b, c, g) {
                    var h, i, j, k = R + " " + f;
                    if (g) {
                        for (; b = b[d];) if ((1 === b.nodeType || e) && a(b, c, g)) return ! 0
                    } else for (; b = b[d];) if (1 === b.nodeType || e) if (j = b[O] || (b[O] = {}), (i = j[d]) && i[0] === k) {
                        if ((h = i[1]) === !0 || h === z) return h === !0
                    } else if (i = j[d] = [k], i[1] = a(b, c, g) || z, i[1] === !0) return ! 0
                }
            }
            function q(a) {
                return a.length > 1 ?
                function(b, c, d) {
                    for (var e = a.length; e--;) if (!a[e](b, c, d)) return ! 1;
                    return ! 0
                }: a[0]
            }
            function r(a, b, c, d, e) {
                for (var f, g = [], h = 0, i = a.length, j = null != b; i > h; h++)(f = a[h]) && (!c || c(f, d, e)) && (g.push(f), j && b.push(h));
                return g
            }
            function s(a, b, c, d, f, g) {
                return d && !d[O] && (d = s(d)),
                f && !f[O] && (f = s(f, g)),
                e(function(e, g, h, i) {
                    var j, k, l, m = [],
                    n = [],
                    o = g.length,
                    p = e || v(b || "*", h.nodeType ? [h] : h, []),
                    q = !a || !e && b ? p: r(p, m, a, h, i),
                    s = c ? f || (e ? a: o || d) ? [] : g: q;
                    if (c && c(q, s, h, i), d) for (j = r(s, n), d(j, [], h, i), k = j.length; k--;)(l = j[k]) && (s[n[k]] = !(q[n[k]] = l));
                    if (e) {
                        if (f || a) {
                            if (f) {
                                for (j = [], k = s.length; k--;)(l = s[k]) && j.push(q[k] = l);
                                f(null, s = [], j, i)
                            }
                            for (k = s.length; k--;)(l = s[k]) && (j = f ? ea.call(e, l) : m[k]) > -1 && (e[j] = !(g[j] = l))
                        }
                    } else s = r(s === g ? s.splice(o, s.length) : s),
                    f ? f(null, g, s, i) : ca.apply(g, s)
                })
            }
            function t(a) {
                for (var b, c, d, e = a.length,
                f = A.relative[a[0].type], g = f || A.relative[" "], h = f ? 1 : 0, i = p(function(a) {
                    return a === b
                },
                g, !0), j = p(function(a) {
                    return ea.call(b, a) > -1
                },
                g, !0), k = [function(a, c, d) {
                    return ! f && (d || c !== E) || ((b = c).nodeType ? i(a, c, d) : j(a, c, d))
                }]; e > h; h++) if (c = A.relative[a[h].type]) k = [p(q(k), c)];
                else {
                    if (c = A.filter[a[h].type].apply(null, a[h].matches), c[O]) {
                        for (d = ++h; e > d && !A.relative[a[d].type]; d++);
                        return s(h > 1 && q(k), h > 1 && o(a.slice(0, h - 1)).replace(ma, "$1"), c, d > h && t(a.slice(h, d)), e > d && t(a = a.slice(d)), e > d && o(a))
                    }
                    k.push(c)
                }
                return q(k)
            }
            function u(a, b) {
                var c = 0,
                d = b.length > 0,
                f = a.length > 0,
                h = function(e, h, i, j, k) {
                    var l, m, n, o = [],
                    p = 0,
                    q = "0",
                    s = e && [],
                    t = null != k,
                    u = E,
                    v = e || f && A.find.TAG("*", k && h.parentNode || h),
                    w = R += null == u ? 1 : Math.random() || .1;
                    for (t && (E = h !== H && h, z = c); null != (l = v[q]); q++) {
                        if (f && l) {
                            for (m = 0; n = a[m++];) if (n(l, h, i)) {
                                j.push(l);
                                break
                            }
                            t && (R = w, z = ++c)
                        }
                        d && ((l = !n && l) && p--, e && s.push(l))
                    }
                    if (p += q, d && q !== p) {
                        for (m = 0; n = b[m++];) n(s, o, h, i);
                        if (e) {
                            if (p > 0) for (; q--;) s[q] || o[q] || (o[q] = aa.call(j));
                            o = r(o)
                        }
                        ca.apply(j, o),
                        t && !e && o.length > 0 && p + b.length > 1 && g.uniqueSort(j)
                    }
                    return t && (R = w, E = u),
                    s
                };
                return d ? e(h) : h
            }
            function v(a, b, c) {
                for (var d = 0,
                e = b.length; e > d; d++) g(a, b[d], c);
                return c
            }
            function w(a, b, c, d) {
                var e, f, g, h, i, j = n(a);
                if (!d && 1 === j.length) {
                    if (f = j[0] = j[0].slice(0), f.length > 2 && "ID" === (g = f[0]).type && 9 === b.nodeType && J && A.relative[f[1].type]) {
                        if (b = (A.find.ID(g.matches[0].replace(za, Aa), b) || [])[0], !b) return c;
                        a = a.slice(f.shift().value.length)
                    }
                    for (e = ta.needsContext.test(a) ? 0 : f.length; e--&&(g = f[e], !A.relative[h = g.type]);) if ((i = A.find[h]) && (d = i(g.matches[0].replace(za, Aa), pa.test(f[0].type) && b.parentNode || b))) {
                        if (f.splice(e, 1), a = d.length && o(f), !a) return ca.apply(c, d),
                        c;
                        break
                    }
                }
                return D(a, j)(d, b, !J, c, pa.test(a)),
                c
            }
            function x() {}
            var y, z, A, B, C, D, E, F, G, H, I, J, K, L, M, N, O = "sizzle" + -new Date,
            P = a.document,
            Q = {},
            R = 0,
            S = 0,
            T = d(),
            U = d(),
            V = d(),
            W = !1,
            X = function() {
                return 0
            },
            Y = typeof b,
            Z = 1 << 31,
            $ = Q.hasOwnProperty,
            _ = [],
            aa = _.pop,
            ba = _.push,
            ca = _.push,
            da = _.slice,
            ea = _.indexOf ||
            function(a) {
                for (var b = 0,
                c = this.length; c > b; b++) if (this[b] === a) return b;
                return - 1
            },
            fa = "checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",
            ga = "[\\x20\\t\\r\\n\\f]",
            ha = "(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",
            ja = ha.replace("w", "w#"),
            ka = "\\[" + ga + "*(" + ha + ")" + ga + "*(?:([*^$|!~]?=)" + ga + "*(?:(['\"])((?:\\\\.|[^\\\\])*?)\\3|(" + ja + ")|)|)" + ga + "*\\]",
            la = ":(" + ha + ")(?:\\(((['\"])((?:\\\\.|[^\\\\])*?)\\3|((?:\\\\.|[^\\\\()[\\]]|" + ka.replace(3, 8) + ")*)|.*)\\)|)",
            ma = new RegExp("^" + ga + "+|((?:^|[^\\\\])(?:\\\\.)*)" + ga + "+$", "g"),
            na = new RegExp("^" + ga + "*," + ga + "*"),
            oa = new RegExp("^" + ga + "*([>+~]|" + ga + ")" + ga + "*"),
            pa = new RegExp(ga + "*[+~]"),
            qa = new RegExp("=" + ga + "*([^\\]'\"]*)" + ga + "*\\]", "g"),
            ra = new RegExp(la),
            sa = new RegExp("^" + ja + "$"),
            ta = {
                ID: new RegExp("^#(" + ha + ")"),
                CLASS: new RegExp("^\\.(" + ha + ")"),
                TAG: new RegExp("^(" + ha.replace("w", "w*") + ")"),
                ATTR: new RegExp("^" + ka),
                PSEUDO: new RegExp("^" + la),
                CHILD: new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" + ga + "*(even|odd|(([+-]|)(\\d*)n|)" + ga + "*(?:([+-]|)" + ga + "*(\\d+)|))" + ga + "*\\)|)", "i"),
                "boolean": new RegExp("^(?:" + fa + ")$", "i"),
                needsContext: new RegExp("^" + ga + "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" + ga + "*((?:-\\d)?\\d*)" + ga + "*\\)|)(?=[^-]|$)", "i")
            },
            ua = /^[^{]+\{\s*\[native \w/,
            va = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,
            wa = /^(?:input|select|textarea|button)$/i,
            xa = /^h\d$/i,
            ya = /'|\\/g,
            za = /\\([\da-fA-F]{1,6}[\x20\t\r\n\f]?|.)/g,
            Aa = function(a, b) {
                var c = "0x" + b - 65536;
                return c !== c ? b: 0 > c ? String.fromCharCode(c + 65536) : String.fromCharCode(c >> 10 | 55296, 1023 & c | 56320)
            };
            try {
                ca.apply(_ = da.call(P.childNodes), P.childNodes),
                _[P.childNodes.length].nodeType
            } catch(Ba) {
                ca = {
                    apply: _.length ?
                    function(a, b) {
                        ba.apply(a, da.call(b))
                    }: function(a, b) {
                        for (var c = a.length,
                        d = 0; a[c++] = b[d++];);
                        a.length = c - 1
                    }
                }
            }
            C = g.isXML = function(a) {
                var b = a && (a.ownerDocument || a).documentElement;
                return b ? "HTML" !== b.nodeName: !1
            },
            G = g.setDocument = function(a) {
                var d = a ? a.ownerDocument || a: P;
                return d !== H && 9 === d.nodeType && d.documentElement ? (H = d, I = d.documentElement, J = !C(d), Q.getElementsByTagName = f(function(a) {
                    return a.appendChild(d.createComment("")),
                    !a.getElementsByTagName("*").length
                }), Q.attributes = f(function(a) {
                    return a.className = "i",
                    !a.getAttribute("className")
                }), Q.getElementsByClassName = f(function(a) {
                    return a.innerHTML = "<div class='a'></div><div class='a i'></div>",
                    a.firstChild.className = "i",
                    2 === a.getElementsByClassName("i").length
                }), Q.sortDetached = f(function(a) {
                    return 1 & a.compareDocumentPosition(H.createElement("div"))
                }), Q.getById = f(function(a) {
                    return I.appendChild(a).id = O,
                    !d.getElementsByName || !d.getElementsByName(O).length
                }), Q.getById ? (A.find.ID = function(a, b) {
                    if (typeof b.getElementById !== Y && J) {
                        var c = b.getElementById(a);
                        return c && c.parentNode ? [c] : []
                    }
                },
                A.filter.ID = function(a) {
                    var b = a.replace(za, Aa);
                    return function(a) {
                        return a.getAttribute("id") === b
                    }
                }) : (A.find.ID = function(a, c) {
                    if (typeof c.getElementById !== Y && J) {
                        var d = c.getElementById(a);
                        return d ? d.id === a || typeof d.getAttributeNode !== Y && d.getAttributeNode("id").value === a ? [d] : b: []
                    }
                },
                A.filter.ID = function(a) {
                    var b = a.replace(za, Aa);
                    return function(a) {
                        var c = typeof a.getAttributeNode !== Y && a.getAttributeNode("id");
                        return c && c.value === b
                    }
                }), A.find.TAG = Q.getElementsByTagName ?
                function(a, b) {
                    return typeof b.getElementsByTagName !== Y ? b.getElementsByTagName(a) : void 0
                }: function(a, b) {
                    var c, d = [],
                    e = 0,
                    f = b.getElementsByTagName(a);
                    if ("*" === a) {
                        for (; c = f[e++];) 1 === c.nodeType && d.push(c);
                        return d
                    }
                    return f
                },
                A.find.CLASS = Q.getElementsByClassName &&
                function(a, b) {
                    return typeof b.getElementsByClassName !== Y && J ? b.getElementsByClassName(a) : void 0
                },
                L = [], K = [], (Q.qsa = c(d.querySelectorAll)) && (f(function(a) {
                    a.innerHTML = "<select><option selected=''></option></select>",
                    a.querySelectorAll("[selected]").length || K.push("\\[" + ga + "*(?:value|" + fa + ")"),
                    a.querySelectorAll(":checked").length || K.push(":checked")
                }), f(function(a) {
                    var b = H.createElement("input");
                    b.setAttribute("type", "hidden"),
                    a.appendChild(b).setAttribute("t", ""),
                    a.querySelectorAll("[t^='']").length && K.push("[*^$]=" + ga + "*(?:''|\"\")"),
                    a.querySelectorAll(":enabled").length || K.push(":enabled", ":disabled"),
                    a.querySelectorAll("*,:x"),
                    K.push(",.*:")
                })), (Q.matchesSelector = c(M = I.webkitMatchesSelector || I.mozMatchesSelector || I.oMatchesSelector || I.msMatchesSelector)) && f(function(a) {
                    Q.disconnectedMatch = M.call(a, "div"),
                    M.call(a, "[s!='']:x"),
                    L.push("!=", la)
                }), K = K.length && new RegExp(K.join("|")), L = L.length && new RegExp(L.join("|")), N = c(I.contains) || I.compareDocumentPosition ?
                function(a, b) {
                    var c = 9 === a.nodeType ? a.documentElement: a,
                    d = b && b.parentNode;
                    return a === d || !(!d || 1 !== d.nodeType || !(c.contains ? c.contains(d) : a.compareDocumentPosition && 16 & a.compareDocumentPosition(d)))
                }: function(a, b) {
                    if (b) for (; b = b.parentNode;) if (b === a) return ! 0;
                    return ! 1
                },
                X = I.compareDocumentPosition ?
                function(a, b) {
                    if (a === b) return W = !0,
                    0;
                    var c = b.compareDocumentPosition && a.compareDocumentPosition && a.compareDocumentPosition(b);
                    return c ? 1 & c || !Q.sortDetached && b.compareDocumentPosition(a) === c ? a === d || N(P, a) ? -1 : b === d || N(P, b) ? 1 : F ? ea.call(F, a) - ea.call(F, b) : 0 : 4 & c ? -1 : 1 : a.compareDocumentPosition ? -1 : 1
                }: function(a, b) {
                    var c, e = 0,
                    f = a.parentNode,
                    g = b.parentNode,
                    i = [a],
                    j = [b];
                    if (a === b) return W = !0,
                    0;
                    if (!f || !g) return a === d ? -1 : b === d ? 1 : f ? -1 : g ? 1 : F ? ea.call(F, a) - ea.call(F, b) : 0;
                    if (f === g) return h(a, b);
                    for (c = a; c = c.parentNode;) i.unshift(c);
                    for (c = b; c = c.parentNode;) j.unshift(c);
                    for (; i[e] === j[e];) e++;
                    return e ? h(i[e], j[e]) : i[e] === P ? -1 : j[e] === P ? 1 : 0
                },
                H) : H
            },
            g.matches = function(a, b) {
                return g(a, null, null, b)
            },
            g.matchesSelector = function(a, b) {
                if ((a.ownerDocument || a) !== H && G(a), b = b.replace(qa, "='$1']"), !(!Q.matchesSelector || !J || L && L.test(b) || K && K.test(b))) try {
                    var c = M.call(a, b);
                    if (c || Q.disconnectedMatch || a.document && 11 !== a.document.nodeType) return c
                } catch(d) {}
                return g(b, H, null, [a]).length > 0
            },
            g.contains = function(a, b) {
                return (a.ownerDocument || a) !== H && G(a),
                N(a, b)
            },
            g.attr = function(a, c) { (a.ownerDocument || a) !== H && G(a);
                var d = A.attrHandle[c.toLowerCase()],
                e = d && ($.call(A.attrHandle, c.toLowerCase()) ? d(a, c, !J) : b);
                return e === b ? Q.attributes || !J ? a.getAttribute(c) : (e = a.getAttributeNode(c)) && e.specified ? e.value: null: e
            },
            g.error = function(a) {
                throw new Error("Syntax error, unrecognized expression: " + a)
            },
            g.uniqueSort = function(a) {
                var b, c = [],
                d = 0,
                e = 0;
                if (W = !Q.detectDuplicates, F = !Q.sortStable && a.slice(0), a.sort(X), W) {
                    for (; b = a[e++];) b === a[e] && (d = c.push(e));
                    for (; d--;) a.splice(c[d], 1)
                }
                return a
            },
            B = g.getText = function(a) {
                var b, c = "",
                d = 0,
                e = a.nodeType;
                if (e) {
                    if (1 === e || 9 === e || 11 === e) {
                        if ("string" == typeof a.textContent) return a.textContent;
                        for (a = a.firstChild; a; a = a.nextSibling) c += B(a)
                    } else if (3 === e || 4 === e) return a.nodeValue
                } else for (; b = a[d]; d++) c += B(b);
                return c
            },
            A = g.selectors = {
                cacheLength: 50,
                createPseudo: e,
                match: ta,
                attrHandle: {},
                find: {},
                relative: {
                    ">": {
                        dir: "parentNode",
                        first: !0
                    },
                    " ": {
                        dir: "parentNode"
                    },
                    "+": {
                        dir: "previousSibling",
                        first: !0
                    },
                    "~": {
                        dir: "previousSibling"
                    }
                },
                preFilter: {
                    ATTR: function(a) {
                        return a[1] = a[1].replace(za, Aa),
                        a[3] = (a[4] || a[5] || "").replace(za, Aa),
                        "~=" === a[2] && (a[3] = " " + a[3] + " "),
                        a.slice(0, 4)
                    },
                    CHILD: function(a) {
                        return a[1] = a[1].toLowerCase(),
                        "nth" === a[1].slice(0, 3) ? (a[3] || g.error(a[0]), a[4] = +(a[4] ? a[5] + (a[6] || 1) : 2 * ("even" === a[3] || "odd" === a[3])), a[5] = +(a[7] + a[8] || "odd" === a[3])) : a[3] && g.error(a[0]),
                        a
                    },
                    PSEUDO: function(a) {
                        var b, c = !a[5] && a[2];
                        return ta.CHILD.test(a[0]) ? null: (a[4] ? a[2] = a[4] : c && ra.test(c) && (b = n(c, !0)) && (b = c.indexOf(")", c.length - b) - c.length) && (a[0] = a[0].slice(0, b), a[2] = c.slice(0, b)), a.slice(0, 3))
                    }
                },
                filter: {
                    TAG: function(a) {
                        var b = a.replace(za, Aa).toLowerCase();
                        return "*" === a ?
                        function() {
                            return ! 0
                        }: function(a) {
                            return a.nodeName && a.nodeName.toLowerCase() === b
                        }
                    },
                    CLASS: function(a) {
                        var b = T[a + " "];
                        return b || (b = new RegExp("(^|" + ga + ")" + a + "(" + ga + "|$)")) && T(a,
                        function(a) {
                            return b.test("string" == typeof a.className && a.className || typeof a.getAttribute !== Y && a.getAttribute("class") || "")
                        })
                    },
                    ATTR: function(a, b, c) {
                        return function(d) {
                            var e = g.attr(d, a);
                            return null == e ? "!=" === b: b ? (e += "", "=" === b ? e === c: "!=" === b ? e !== c: "^=" === b ? c && 0 === e.indexOf(c) : "*=" === b ? c && e.indexOf(c) > -1 : "$=" === b ? c && e.slice( - c.length) === c: "~=" === b ? (" " + e + " ").indexOf(c) > -1 : "|=" === b ? e === c || e.slice(0, c.length + 1) === c + "-": !1) : !0
                        }
                    },
                    CHILD: function(a, b, c, d, e) {
                        var f = "nth" !== a.slice(0, 3),
                        g = "last" !== a.slice( - 4),
                        h = "of-type" === b;
                        return 1 === d && 0 === e ?
                        function(a) {
                            return !! a.parentNode
                        }: function(b, c, i) {
                            var j, k, l, m, n, o, p = f !== g ? "nextSibling": "previousSibling",
                            q = b.parentNode,
                            r = h && b.nodeName.toLowerCase(),
                            s = !i && !h;
                            if (q) {
                                if (f) {
                                    for (; p;) {
                                        for (l = b; l = l[p];) if (h ? l.nodeName.toLowerCase() === r: 1 === l.nodeType) return ! 1;
                                        o = p = "only" === a && !o && "nextSibling"
                                    }
                                    return ! 0
                                }
                                if (o = [g ? q.firstChild: q.lastChild], g && s) {
                                    for (k = q[O] || (q[O] = {}), j = k[a] || [], n = j[0] === R && j[1], m = j[0] === R && j[2], l = n && q.childNodes[n]; l = ++n && l && l[p] || (m = n = 0) || o.pop();) if (1 === l.nodeType && ++m && l === b) {
                                        k[a] = [R, n, m];
                                        break
                                    }
                                } else if (s && (j = (b[O] || (b[O] = {}))[a]) && j[0] === R) m = j[1];
                                else for (; (l = ++n && l && l[p] || (m = n = 0) || o.pop()) && ((h ? l.nodeName.toLowerCase() !== r: 1 !== l.nodeType) || !++m || (s && ((l[O] || (l[O] = {}))[a] = [R, m]), l !== b)););
                                return m -= e,
                                m === d || m % d === 0 && m / d >= 0
                            }
                        }
                    },
                    PSEUDO: function(a, b) {
                        var c, d = A.pseudos[a] || A.setFilters[a.toLowerCase()] || g.error("unsupported pseudo: " + a);
                        return d[O] ? d(b) : d.length > 1 ? (c = [a, a, "", b], A.setFilters.hasOwnProperty(a.toLowerCase()) ? e(function(a, c) {
                            for (var e, f = d(a, b), g = f.length; g--;) e = ea.call(a, f[g]),
                            a[e] = !(c[e] = f[g])
                        }) : function(a) {
                            return d(a, 0, c)
                        }) : d
                    }
                },
                pseudos: {
                    not: e(function(a) {
                        var b = [],
                        c = [],
                        d = D(a.replace(ma, "$1"));
                        return d[O] ? e(function(a, b, c, e) {
                            for (var f, g = d(a, null, e, []), h = a.length; h--;)(f = g[h]) && (a[h] = !(b[h] = f))
                        }) : function(a, e, f) {
                            return b[0] = a,
                            d(b, null, f, c),
                            !c.pop()
                        }
                    }),
                    has: e(function(a) {
                        return function(b) {
                            return g(a, b).length > 0
                        }
                    }),
                    contains: e(function(a) {
                        return function(b) {
                            return (b.textContent || b.innerText || B(b)).indexOf(a) > -1
                        }
                    }),
                    lang: e(function(a) {
                        return sa.test(a || "") || g.error("unsupported lang: " + a),
                        a = a.replace(za, Aa).toLowerCase(),
                        function(b) {
                            var c;
                            do
                            if (c = J ? b.lang: b.getAttribute("xml:lang") || b.getAttribute("lang")) return c = c.toLowerCase(),
                            c === a || 0 === c.indexOf(a + "-");
                            while ((b = b.parentNode) && 1 === b.nodeType);
                            return ! 1
                        }
                    }),
                    target: function(b) {
                        var c = a.location && a.location.hash;
                        return c && c.slice(1) === b.id
                    },
                    root: function(a) {
                        return a === I
                    },
                    focus: function(a) {
                        return a === H.activeElement && (!H.hasFocus || H.hasFocus()) && !!(a.type || a.href || ~a.tabIndex)
                    },
                    enabled: function(a) {
                        return a.disabled === !1
                    },
                    disabled: function(a) {
                        return a.disabled === !0
                    },
                    checked: function(a) {
                        var b = a.nodeName.toLowerCase();
                        return "input" === b && !!a.checked || "option" === b && !!a.selected
                    },
                    selected: function(a) {
                        return a.parentNode && a.parentNode.selectedIndex,
                        a.selected === !0
                    },
                    empty: function(a) {
                        for (a = a.firstChild; a; a = a.nextSibling) if (a.nodeName > "@" || 3 === a.nodeType || 4 === a.nodeType) return ! 1;
                        return ! 0
                    },
                    parent: function(a) {
                        return ! A.pseudos.empty(a)
                    },
                    header: function(a) {
                        return xa.test(a.nodeName)
                    },
                    input: function(a) {
                        return wa.test(a.nodeName)
                    },
                    button: function(a) {
                        var b = a.nodeName.toLowerCase();
                        return "input" === b && "button" === a.type || "button" === b
                    },
                    text: function(a) {
                        var b;
                        return "input" === a.nodeName.toLowerCase() && "text" === a.type && (null == (b = a.getAttribute("type")) || b.toLowerCase() === a.type)
                    },
                    first: m(function() {
                        return [0]
                    }),
                    last: m(function(a, b) {
                        return [b - 1]
                    }),
                    eq: m(function(a, b, c) {
                        return [0 > c ? c + b: c]
                    }),
                    even: m(function(a, b) {
                        for (var c = 0; b > c; c += 2) a.push(c);
                        return a
                    }),
                    odd: m(function(a, b) {
                        for (var c = 1; b > c; c += 2) a.push(c);
                        return a
                    }),
                    lt: m(function(a, b, c) {
                        for (var d = 0 > c ? c + b: c; --d >= 0;) a.push(d);
                        return a
                    }),
                    gt: m(function(a, b, c) {
                        for (var d = 0 > c ? c + b: c; ++d < b;) a.push(d);
                        return a
                    })
                }
            };
            for (y in {
                radio: !0,
                checkbox: !0,
                file: !0,
                password: !0,
                image: !0
            }) A.pseudos[y] = k(y);
            for (y in {
                submit: !0,
                reset: !0
            }) A.pseudos[y] = l(y);
            D = g.compile = function(a, b) {
                var c, d = [],
                e = [],
                f = V[a + " "];
                if (!f) {
                    for (b || (b = n(a)), c = b.length; c--;) f = t(b[c]),
                    f[O] ? d.push(f) : e.push(f);
                    f = V(a, u(e, d))
                }
                return f
            },
            A.pseudos.nth = A.pseudos.eq,
            x.prototype = A.filters = A.pseudos,
            A.setFilters = new x,
            Q.sortStable = O.split("").sort(X).join("") === O,
            G(),
            [0, 0].sort(X),
            Q.detectDuplicates = W,
            f(function(a) {
                if (a.innerHTML = "<a href='#'></a>", "#" !== a.firstChild.getAttribute("href")) for (var b = "type|href|height|width".split("|"), c = b.length; c--;) A.attrHandle[b[c]] = j
            }),
            f(function(a) {
                if (null != a.getAttribute("disabled")) for (var b = fa.split("|"), c = b.length; c--;) A.attrHandle[b[c]] = i
            }),
            ia.find = g,
            ia.expr = g.selectors,
            ia.expr[":"] = ia.expr.pseudos,
            ia.unique = g.uniqueSort,
            ia.text = g.getText,
            ia.isXMLDoc = g.isXML,
            ia.contains = g.contains
        } (a);
        var Pa = /Until$/,
        Qa = /^(?:parents|prev(?:Until|All))/,
        Ra = /^.[^:#\[\.,]*$/,
        Sa = ia.expr.match.needsContext,
        Ta = {
            children: !0,
            contents: !0,
            next: !0,
            prev: !0
        };
        ia.fn.extend({
            find: function(a) {
                var b, c, d, e = this.length;
                if ("string" != typeof a) return d = this,
                this.pushStack(ia(a).filter(function() {
                    for (b = 0; e > b; b++) if (ia.contains(d[b], this)) return ! 0
                }));
                for (c = [], b = 0; e > b; b++) ia.find(a, this[b], c);
                return c = this.pushStack(e > 1 ? ia.unique(c) : c),
                c.selector = (this.selector ? this.selector + " ": "") + a,
                c
            },
            has: function(a) {
                var b, c = ia(a, this),
                d = c.length;
                return this.filter(function() {
                    for (b = 0; d > b; b++) if (ia.contains(this, c[b])) return ! 0
                })
            },
            not: function(a) {
                return this.pushStack(m(this, a, !1))
            },
            filter: function(a) {
                return this.pushStack(m(this, a, !0))
            },
            is: function(a) {
                return !! a && ("string" == typeof a ? Sa.test(a) ? ia(a, this.context).index(this[0]) >= 0 : ia.filter(a, this).length > 0 : this.filter(a).length > 0)
            },
            closest: function(a, b) {
                for (var c, d = 0,
                e = this.length,
                f = [], g = Sa.test(a) || "string" != typeof a ? ia(a, b || this.context) : 0; e > d; d++) for (c = this[d]; c && c !== b; c = c.parentNode) if (c.nodeType < 11 && (g ? g.index(c) > -1 : 1 === c.nodeType && ia.find.matchesSelector(c, a))) {
                    c = f.push(c);
                    break
                }
                return this.pushStack(f.length > 1 ? ia.unique(f) : f)
            },
            index: function(a) {
                return a ? "string" == typeof a ? ia.inArray(this[0], ia(a)) : ia.inArray(a.jquery ? a[0] : a, this) : this[0] && this[0].parentNode ? this.first().prevAll().length: -1
            },
            add: function(a, b) {
                var c = "string" == typeof a ? ia(a, b) : ia.makeArray(a && a.nodeType ? [a] : a),
                d = ia.merge(this.get(), c);
                return this.pushStack(ia.unique(d))
            },
            addBack: function(a) {
                return this.add(null == a ? this.prevObject: this.prevObject.filter(a))
            }
        }),
        ia.fn.andSelf = ia.fn.addBack,
        ia.each({
            parent: function(a) {
                var b = a.parentNode;
                return b && 11 !== b.nodeType ? b: null
            },
            parents: function(a) {
                return ia.dir(a, "parentNode")
            },
            parentsUntil: function(a, b, c) {
                return ia.dir(a, "parentNode", c)
            },
            next: function(a) {
                return l(a, "nextSibling")
            },
            prev: function(a) {
                return l(a, "previousSibling")
            },
            nextAll: function(a) {
                return ia.dir(a, "nextSibling")
            },
            prevAll: function(a) {
                return ia.dir(a, "previousSibling")
            },
            nextUntil: function(a, b, c) {
                return ia.dir(a, "nextSibling", c)
            },
            prevUntil: function(a, b, c) {
                return ia.dir(a, "previousSibling", c)
            },
            siblings: function(a) {
                return ia.sibling((a.parentNode || {}).firstChild, a)
            },
            children: function(a) {
                return ia.sibling(a.firstChild)
            },
            contents: function(a) {
                return ia.nodeName(a, "iframe") ? a.contentDocument || a.contentWindow.document: ia.merge([], a.childNodes)
            }
        },
        function(a, b) {
            ia.fn[a] = function(c, d) {
                var e = ia.map(this, b, c);
                return Pa.test(a) || (d = c),
                d && "string" == typeof d && (e = ia.filter(d, e)),
                e = this.length > 1 && !Ta[a] ? ia.unique(e) : e,
                this.length > 1 && Qa.test(a) && (e = e.reverse()),
                this.pushStack(e)
            }
        }),
        ia.extend({
            filter: function(a, b, c) {
                return c && (a = ":not(" + a + ")"),
                1 === b.length ? ia.find.matchesSelector(b[0], a) ? [b[0]] : [] : ia.find.matches(a, b)
            },
            dir: function(a, c, d) {
                for (var e = [], f = a[c]; f && 9 !== f.nodeType && (d === b || 1 !== f.nodeType || !ia(f).is(d));) 1 === f.nodeType && e.push(f),
                f = f[c];
                return e
            },
            sibling: function(a, b) {
                for (var c = []; a; a = a.nextSibling) 1 === a.nodeType && a !== b && c.push(a);
                return c
            }
        });
        var Ua = "abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",
        Va = / jQuery\d+="(?:null|\d+)"/g,
        Wa = new RegExp("<(?:" + Ua + ")[\\s/>]", "i"),
        Xa = /^\s+/,
        Ya = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,
        Za = /<([\w:]+)/,
        $a = /<tbody/i,
        _a = /<|&#?\w+;/,
        ab = /<(?:script|style|link)/i,
        bb = /^(?:checkbox|radio)$/i,
        cb = /checked\s*(?:[^=]|=\s*.checked.)/i,
        db = /^$|\/(?:java|ecma)script/i,
        eb = /^true\/(.*)/,
        fb = /^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g,
        gb = {
            option: [1, "<select multiple='multiple'>", "</select>"],
            legend: [1, "<fieldset>", "</fieldset>"],
            area: [1, "<map>", "</map>"],
            param: [1, "<object>", "</object>"],
            thead: [1, "<table>", "</table>"],
            tr: [2, "<table><tbody>", "</tbody></table>"],
            col: [2, "<table><tbody></tbody><colgroup>", "</colgroup></table>"],
            td: [3, "<table><tbody><tr>", "</tr></tbody></table>"],
            _default: ia.support.htmlSerialize ? [0, "", ""] : [1, "X<div>", "</div>"]
        },
        hb = n(W),
        ib = hb.appendChild(W.createElement("div"));
        gb.optgroup = gb.option,
        gb.tbody = gb.tfoot = gb.colgroup = gb.caption = gb.thead,
        gb.th = gb.td,
        ia.fn.extend({
            text: function(a) {
                return ia.access(this,
                function(a) {
                    return a === b ? ia.text(this) : this.empty().append((this[0] && this[0].ownerDocument || W).createTextNode(a))
                },
                null, a, arguments.length)
            },
            wrapAll: function(a) {
                if (ia.isFunction(a)) return this.each(function(b) {
                    ia(this).wrapAll(a.call(this, b))
                });
                if (this[0]) {
                    var b = ia(a, this[0].ownerDocument).eq(0).clone(!0);
                    this[0].parentNode && b.insertBefore(this[0]),
                    b.map(function() {
                        for (var a = this; a.firstChild && 1 === a.firstChild.nodeType;) a = a.firstChild;
                        return a
                    }).append(this)
                }
                return this
            },
            wrapInner: function(a) {
                return ia.isFunction(a) ? this.each(function(b) {
                    ia(this).wrapInner(a.call(this, b))
                }) : this.each(function() {
                    var b = ia(this),
                    c = b.contents();
                    c.length ? c.wrapAll(a) : b.append(a)
                })
            },
            wrap: function(a) {
                var b = ia.isFunction(a);
                return this.each(function(c) {
                    ia(this).wrapAll(b ? a.call(this, c) : a)
                })
            },
            unwrap: function() {
                return this.parent().each(function() {
                    ia.nodeName(this, "body") || ia(this).replaceWith(this.childNodes)
                }).end()
            },
            append: function() {
                return this.domManip(arguments, !0,
                function(a) { (1 === this.nodeType || 11 === this.nodeType || 9 === this.nodeType) && this.appendChild(a)
                })
            },
            prepend: function() {
                return this.domManip(arguments, !0,
                function(a) { (1 === this.nodeType || 11 === this.nodeType || 9 === this.nodeType) && this.insertBefore(a, this.firstChild)
                })
            },
            before: function() {
                return this.domManip(arguments, !1,
                function(a) {
                    this.parentNode && this.parentNode.insertBefore(a, this)
                })
            },
            after: function() {
                return this.domManip(arguments, !1,
                function(a) {
                    this.parentNode && this.parentNode.insertBefore(a, this.nextSibling)
                })
            },
            remove: function(a, b) {
                for (var c, d = 0; null != (c = this[d]); d++)(!a || ia.filter(a, [c]).length > 0) && (b || 1 !== c.nodeType || ia.cleanData(u(c)), c.parentNode && (b && ia.contains(c.ownerDocument, c) && r(u(c, "script")), c.parentNode.removeChild(c)));
                return this
            },
            empty: function() {
                for (var a, b = 0; null != (a = this[b]); b++) {
                    for (1 === a.nodeType && ia.cleanData(u(a, !1)); a.firstChild;) a.removeChild(a.firstChild);
                    a.options && ia.nodeName(a, "select") && (a.options.length = 0)
                }
                return this
            },
            clone: function(a, b) {
                return a = null == a ? !1 : a,
                b = null == b ? a: b,
                this.map(function() {
                    return ia.clone(this, a, b)
                })
            },
            html: function(a) {
                return ia.access(this,
                function(a) {
                    var c = this[0] || {},
                    d = 0,
                    e = this.length;
                    if (a === b) return 1 === c.nodeType ? c.innerHTML.replace(Va, "") : b;
                    if (! ("string" != typeof a || ab.test(a) || !ia.support.htmlSerialize && Wa.test(a) || !ia.support.leadingWhitespace && Xa.test(a) || gb[(Za.exec(a) || ["", ""])[1].toLowerCase()])) {
                        a = a.replace(Ya, "<$1></$2>");
                        try {
                            for (; e > d; d++) c = this[d] || {},
                            1 === c.nodeType && (ia.cleanData(u(c, !1)), c.innerHTML = a);
                            c = 0
                        } catch(f) {}
                    }
                    c && this.empty().append(a)
                },
                null, a, arguments.length)
            },
            replaceWith: function(a) {
                var b = ia.isFunction(a);
                return b || "string" == typeof a || (a = ia(a).not(this).detach()),
                "" !== a ? this.domManip([a], !0,
                function(a) {
                    var b = this.nextSibling,
                    c = this.parentNode;
                    c && (ia(this).remove(), c.insertBefore(a, b))
                }) : this.remove()
            },
            detach: function(a) {
                return this.remove(a, !0)
            },
            domManip: function(a, c, d) {
                a = ba.apply([], a);
                var e, f, g, h, i, j, k = 0,
                l = this.length,
                m = this,
                n = l - 1,
                r = a[0],
                s = ia.isFunction(r);
                if (s || !(1 >= l || "string" != typeof r || ia.support.checkClone) && cb.test(r)) return this.each(function(e) {
                    var f = m.eq(e);
                    s && (a[0] = r.call(this, e, c ? f.html() : b)),
                    f.domManip(a, c, d)
                });
                if (l && (j = ia.buildFragment(a, this[0].ownerDocument, !1, this), e = j.firstChild, 1 === j.childNodes.length && (j = e), e)) {
                    for (c = c && ia.nodeName(e, "tr"), h = ia.map(u(j, "script"), p), g = h.length; l > k; k++) f = j,
                    k !== n && (f = ia.clone(f, !0, !0), g && ia.merge(h, u(f, "script"))),
                    d.call(c && ia.nodeName(this[k], "table") ? o(this[k], "tbody") : this[k], f, k);
                    if (g) for (i = h[h.length - 1].ownerDocument, ia.map(h, q), k = 0; g > k; k++) f = h[k],
                    db.test(f.type || "") && !ia._data(f, "globalEval") && ia.contains(i, f) && (f.src ? ia.ajax({
                        url: f.src,
                        type: "GET",
                        dataType: "script",
                        async: !1,
                        global: !1,
                        "throws": !0
                    }) : ia.globalEval((f.text || f.textContent || f.innerHTML || "").replace(fb, "")));
                    j = e = null
                }
                return this
            }
        }),
        ia.each({
            appendTo: "append",
            prependTo: "prepend",
            insertBefore: "before",
            insertAfter: "after",
            replaceAll: "replaceWith"
        },
        function(a, b) {
            ia.fn[a] = function(a) {
                for (var c, d = 0,
                e = [], f = ia(a), g = f.length - 1; g >= d; d++) c = d === g ? this: this.clone(!0),
                ia(f[d])[b](c),
                ca.apply(e, c.get());
                return this.pushStack(e)
            }
        }),
        ia.extend({
            clone: function(a, b, c) {
                var d, e, f, g, h, i = ia.contains(a.ownerDocument, a);
                if (ia.support.html5Clone || ia.isXMLDoc(a) || !Wa.test("<" + a.nodeName + ">") ? f = a.cloneNode(!0) : (ib.innerHTML = a.outerHTML, ib.removeChild(f = ib.firstChild)), !(ia.support.noCloneEvent && ia.support.noCloneChecked || 1 !== a.nodeType && 11 !== a.nodeType || ia.isXMLDoc(a))) for (d = u(f), h = u(a), g = 0; null != (e = h[g]); ++g) d[g] && t(e, d[g]);
                if (b) if (c) for (h = h || u(a), d = d || u(f), g = 0; null != (e = h[g]); g++) s(e, d[g]);
                else s(a, f);
                return d = u(f, "script"),
                d.length > 0 && r(d, !i && u(a, "script")),
                d = h = e = null,
                f
            },
            buildFragment: function(a, b, c, d) {
                for (var e, f, g, h, i, j, k, l = a.length,
                m = n(b), o = [], p = 0; l > p; p++) if (f = a[p], f || 0 === f) if ("object" === ia.type(f)) ia.merge(o, f.nodeType ? [f] : f);
                else if (_a.test(f)) {
                    for (h = h || m.appendChild(b.createElement("div")), i = (Za.exec(f) || ["", ""])[1].toLowerCase(), k = gb[i] || gb._default, h.innerHTML = k[1] + f.replace(Ya, "<$1></$2>") + k[2], e = k[0]; e--;) h = h.lastChild;
                    if (!ia.support.leadingWhitespace && Xa.test(f) && o.push(b.createTextNode(Xa.exec(f)[0])), !ia.support.tbody) for (f = "table" !== i || $a.test(f) ? "<table>" !== k[1] || $a.test(f) ? 0 : h: h.firstChild, e = f && f.childNodes.length; e--;) ia.nodeName(j = f.childNodes[e], "tbody") && !j.childNodes.length && f.removeChild(j);
                    for (ia.merge(o, h.childNodes), h.textContent = ""; h.firstChild;) h.removeChild(h.firstChild);
                    h = m.lastChild
                } else o.push(b.createTextNode(f));
                for (h && m.removeChild(h), ia.support.appendChecked || ia.grep(u(o, "input"), v), p = 0; f = o[p++];) if ((!d || -1 === ia.inArray(f, d)) && (g = ia.contains(f.ownerDocument, f), h = u(m.appendChild(f), "script"), g && r(h), c)) for (e = 0; f = h[e++];) db.test(f.type || "") && c.push(f);
                return h = null,
                m
            },
            cleanData: function(a, b) {
                for (var c, d, e, f, g = 0,
                h = ia.expando,
                i = ia.cache,
                j = ia.support.deleteExpando,
                k = ia.event.special; null != (c = a[g]); g++) if ((b || ia.acceptData(c)) && (e = c[h], f = e && i[e])) {
                    if (f.events) for (d in f.events) k[d] ? ia.event.remove(c, d) : ia.removeEvent(c, d, f.handle);
                    i[e] && (delete i[e], j ? delete c[h] : typeof c.removeAttribute !== U ? c.removeAttribute(h) : c[h] = null, _.push(e))
                }
            }
        });
        var jb, kb, lb, mb = /alpha\([^)]*\)/i,
        nb = /opacity\s*=\s*([^)]*)/,
        ob = /^(top|right|bottom|left)$/,
        pb = /^(none|table(?!-c[ea]).+)/,
        qb = /^margin/,
        rb = new RegExp("^(" + ja + ")(.*)$", "i"),
        sb = new RegExp("^(" + ja + ")(?!px)[a-z%]+$", "i"),
        tb = new RegExp("^([+-])=(" + ja + ")", "i"),
        ub = {
            BODY: "block"
        },
        vb = {
            position: "absolute",
            visibility: "hidden",
            display: "block"
        },
        wb = {
            letterSpacing: 0,
            fontWeight: 400
        },
        xb = ["Top", "Right", "Bottom", "Left"],
        yb = ["Webkit", "O", "Moz", "ms"];
        ia.fn.extend({
            css: function(a, c) {
                return ia.access(this,
                function(a, c, d) {
                    var e, f, g = {},
                    h = 0;
                    if (ia.isArray(c)) {
                        for (f = kb(a), e = c.length; e > h; h++) g[c[h]] = ia.css(a, c[h], !1, f);
                        return g
                    }
                    return d !== b ? ia.style(a, c, d) : ia.css(a, c)
                },
                a, c, arguments.length > 1)
            },
            show: function() {
                return y(this, !0)
            },
            hide: function() {
                return y(this)
            },
            toggle: function(a) {
                var b = "boolean" == typeof a;
                return this.each(function() { (b ? a: x(this)) ? ia(this).show() : ia(this).hide()
                })
            }
        }),
        ia.extend({
            cssHooks: {
                opacity: {
                    get: function(a, b) {
                        if (b) {
                            var c = lb(a, "opacity");
                            return "" === c ? "1": c
                        }
                    }
                }
            },
            cssNumber: {
                columnCount: !0,
                fillOpacity: !0,
                fontWeight: !0,
                lineHeight: !0,
                opacity: !0,
                orphans: !0,
                widows: !0,
                zIndex: !0,
                zoom: !0
            },
            cssProps: {
                "float": ia.support.cssFloat ? "cssFloat": "styleFloat"
            },
            style: function(a, c, d, e) {
                if (a && 3 !== a.nodeType && 8 !== a.nodeType && a.style) {
                    var f, g, h, i = ia.camelCase(c),
                    j = a.style;
                    if (c = ia.cssProps[i] || (ia.cssProps[i] = w(j, i)), h = ia.cssHooks[c] || ia.cssHooks[i], d === b) return h && "get" in h && (f = h.get(a, !1, e)) !== b ? f: j[c];
                    if (g = typeof d, "string" === g && (f = tb.exec(d)) && (d = (f[1] + 1) * f[2] + parseFloat(ia.css(a, c)), g = "number"), !(null == d || "number" === g && isNaN(d) || ("number" !== g || ia.cssNumber[i] || (d += "px"), ia.support.clearCloneStyle || "" !== d || 0 !== c.indexOf("background") || (j[c] = "inherit"), h && "set" in h && (d = h.set(a, d, e)) === b))) try {
                        j[c] = d
                    } catch(k) {}
                }
            },
            css: function(a, c, d, e) {
                var f, g, h, i = ia.camelCase(c);
                return c = ia.cssProps[i] || (ia.cssProps[i] = w(a.style, i)),
                h = ia.cssHooks[c] || ia.cssHooks[i],
                h && "get" in h && (g = h.get(a, !0, d)),
                g === b && (g = lb(a, c, e)),
                "normal" === g && c in wb && (g = wb[c]),
                "" === d || d ? (f = parseFloat(g), d === !0 || ia.isNumeric(f) ? f || 0 : g) : g
            },
            swap: function(a, b, c, d) {
                var e, f, g = {};
                for (f in b) g[f] = a.style[f],
                a.style[f] = b[f];
                e = c.apply(a, d || []);
                for (f in b) a.style[f] = g[f];
                return e
            }
        }),
        a.getComputedStyle ? (kb = function(b) {
            return a.getComputedStyle(b, null)
        },
        lb = function(a, c, d) {
            var e, f, g, h = d || kb(a),
            i = h ? h.getPropertyValue(c) || h[c] : b,
            j = a.style;
            return h && ("" !== i || ia.contains(a.ownerDocument, a) || (i = ia.style(a, c)), sb.test(i) && qb.test(c) && (e = j.width, f = j.minWidth, g = j.maxWidth, j.minWidth = j.maxWidth = j.width = i, i = h.width, j.width = e, j.minWidth = f, j.maxWidth = g)),
            i
        }) : W.documentElement.currentStyle && (kb = function(a) {
            return a.currentStyle
        },
        lb = function(a, c, d) {
            var e, f, g, h = d || kb(a),
            i = h ? h[c] : b,
            j = a.style;
            return null == i && j && j[c] && (i = j[c]),
            sb.test(i) && !ob.test(c) && (e = j.left, f = a.runtimeStyle, g = f && f.left, g && (f.left = a.currentStyle.left), j.left = "fontSize" === c ? "1em": i, i = j.pixelLeft + "px", j.left = e, g && (f.left = g)),
            "" === i ? "auto": i
        }),
        ia.each(["height", "width"],
        function(a, b) {
            ia.cssHooks[b] = {
                get: function(a, c, d) {
                    return c ? 0 === a.offsetWidth && pb.test(ia.css(a, "display")) ? ia.swap(a, vb,
                    function() {
                        return B(a, b, d)
                    }) : B(a, b, d) : void 0
                },
                set: function(a, c, d) {
                    var e = d && kb(a);
                    return z(a, c, d ? A(a, b, d, ia.support.boxSizing && "border-box" === ia.css(a, "boxSizing", !1, e), e) : 0)
                }
            }
        }),
        ia.support.opacity || (ia.cssHooks.opacity = {
            get: function(a, b) {
                return nb.test((b && a.currentStyle ? a.currentStyle.filter: a.style.filter) || "") ? .01 * parseFloat(RegExp.$1) + "": b ? "1": ""
            },
            set: function(a, b) {
                var c = a.style,
                d = a.currentStyle,
                e = ia.isNumeric(b) ? "alpha(opacity=" + 100 * b + ")": "",
                f = d && d.filter || c.filter || "";
                c.zoom = 1,
                (b >= 1 || "" === b) && "" === ia.trim(f.replace(mb, "")) && c.removeAttribute && (c.removeAttribute("filter"), "" === b || d && !d.filter) || (c.filter = mb.test(f) ? f.replace(mb, e) : f + " " + e)
            }
        }),
        ia(function() {
            ia.support.reliableMarginRight || (ia.cssHooks.marginRight = {
                get: function(a, b) {
                    return b ? ia.swap(a, {
                        display: "inline-block"
                    },
                    lb, [a, "marginRight"]) : void 0
                }
            }),
            !ia.support.pixelPosition && ia.fn.position && ia.each(["top", "left"],
            function(a, b) {
                ia.cssHooks[b] = {
                    get: function(a, c) {
                        return c ? (c = lb(a, b), sb.test(c) ? ia(a).position()[b] + "px": c) : void 0
                    }
                }
            })
        }),
        ia.expr && ia.expr.filters && (ia.expr.filters.hidden = function(a) {
            return a.offsetWidth <= 0 && a.offsetHeight <= 0 || !ia.support.reliableHiddenOffsets && "none" === (a.style && a.style.display || ia.css(a, "display"))
        },
        ia.expr.filters.visible = function(a) {
            return ! ia.expr.filters.hidden(a)
        }),
        ia.each({
            margin: "",
            padding: "",
            border: "Width"
        },
        function(a, b) {
            ia.cssHooks[a + b] = {
                expand: function(c) {
                    for (var d = 0,
                    e = {},
                    f = "string" == typeof c ? c.split(" ") : [c]; 4 > d; d++) e[a + xb[d] + b] = f[d] || f[d - 2] || f[0];
                    return e
                }
            },
            qb.test(a) || (ia.cssHooks[a + b].set = z)
        });
        var zb = /%20/g,
        Ab = /\[\]$/,
        Bb = /\r?\n/g,
        Cb = /^(?:submit|button|image|reset|file)$/i,
        Db = /^(?:input|select|textarea|keygen)/i;
        ia.fn.extend({
            serialize: function() {
                return ia.param(this.serializeArray())
            },
            serializeArray: function() {
                return this.map(function() {
                    var a = ia.prop(this, "elements");
                    return a ? ia.makeArray(a) : this
                }).filter(function() {
                    var a = this.type;
                    return this.name && !ia(this).is(":disabled") && Db.test(this.nodeName) && !Cb.test(a) && (this.checked || !bb.test(a))
                }).map(function(a, b) {
                    var c = ia(this).val();
                    return null == c ? null: ia.isArray(c) ? ia.map(c,
                    function(a) {
                        return {
                            name: b.name,
                            value: a.replace(Bb, "\r\n")
                        }
                    }) : {
                        name: b.name,
                        value: c.replace(Bb, "\r\n")
                    }
                }).get()
            }
        }),
        ia.param = function(a, c) {
            var d, e = [],
            f = function(a, b) {
                b = ia.isFunction(b) ? b() : null == b ? "": b,
                e[e.length] = encodeURIComponent(a) + "=" + encodeURIComponent(b)
            };
            if (c === b && (c = ia.ajaxSettings && ia.ajaxSettings.traditional), ia.isArray(a) || a.jquery && !ia.isPlainObject(a)) ia.each(a,
            function() {
                f(this.name, this.value)
            });
            else for (d in a) E(d, a[d], c, f);
            return e.join("&").replace(zb, "+")
        };
        var Eb, Fb, Gb = ia.now(),
        Hb = /\?/,
        Ib = /#.*$/,
        Jb = /([?&])_=[^&]*/,
        Kb = /^(.*?):[ \t]*([^\r\n]*)\r?$/gm,
        Lb = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/,
        Mb = /^(?:GET|HEAD)$/,
        Nb = /^\/\//,
        Ob = /^([\w.+-]+:)(?:\/\/([^\/?#:]*)(?::(\d+)|)|)/,
        Pb = ia.fn.load,
        Qb = {},
        Rb = {},
        Sb = "*/".concat("*");
        try {
            Fb = V.href
        } catch(Tb) {
            Fb = W.createElement("a"),
            Fb.href = "",
            Fb = Fb.href
        }
        Eb = Ob.exec(Fb.toLowerCase()) || [],
        ia.fn.load = function(a, c, d) {
            if ("string" != typeof a && Pb) return Pb.apply(this, arguments);
            var e, f, g, h = this,
            i = a.indexOf(" ");
            return i >= 0 && (e = a.slice(i, a.length), a = a.slice(0, i)),
            ia.isFunction(c) ? (d = c, c = b) : c && "object" == typeof c && (g = "POST"),
            h.length > 0 && ia.ajax({
                url: a,
                type: g,
                dataType: "html",
                data: c
            }).done(function(a) {
                f = arguments,
                h.html(e ? ia("<div>").append(ia.parseHTML(a)).find(e) : a)
            }).complete(d &&
            function(a, b) {
                h.each(d, f || [a.responseText, b, a])
            }),
            this
        },
        ia.each(["ajaxStart", "ajaxStop", "ajaxComplete", "ajaxError", "ajaxSuccess", "ajaxSend"],
        function(a, b) {
            ia.fn[b] = function(a) {
                return this.on(b, a)
            }
        }),
        ia.each(["get", "post"],
        function(a, c) {
            ia[c] = function(a, d, e, f) {
                return ia.isFunction(d) && (f = f || e, e = d, d = b),
                ia.ajax({
                    url: a,
                    type: c,
                    dataType: f,
                    data: d,
                    success: e
                })
            }
        }),
        ia.extend({
            active: 0,
            lastModified: {},
            etag: {},
            ajaxSettings: {
                url: Fb,
                type: "GET",
                isLocal: Lb.test(Eb[1]),
                global: !0,
                processData: !0,
                async: !0,
                contentType: "application/x-www-form-urlencoded; charset=UTF-8",
                accepts: {
                    "*": Sb,
                    text: "text/plain",
                    html: "text/html",
                    xml: "application/xml, text/xml",
                    json: "application/json, text/javascript"
                },
                contents: {
                    xml: /xml/,
                    html: /html/,
                    json: /json/
                },
                responseFields: {
                    xml: "responseXML",
                    text: "responseText",
                    json: "responseJSON"
                },
                converters: {
                    "* text": String,
                    "text html": !0,
                    "text json": ia.parseJSON,
                    "text xml": ia.parseXML
                },
                flatOptions: {
                    url: !0,
                    context: !0
                }
            },
            ajaxSetup: function(a, b) {
                return b ? H(H(a, ia.ajaxSettings), b) : H(ia.ajaxSettings, a)
            },
            ajaxPrefilter: F(Qb),
            ajaxTransport: F(Rb),
            ajax: function(a, c) {
                function d(a, c, d, e) {
                    var f, l, s, t, v, x = c;
                    2 !== u && (u = 2, i && clearTimeout(i), k = b, h = e || "", w.readyState = a > 0 ? 4 : 0, f = a >= 200 && 300 > a || 304 === a, d && (t = I(m, w, d)), t = J(m, t, w, f), f ? (m.ifModified && (v = w.getResponseHeader("Last-Modified"), v && (ia.lastModified[g] = v), v = w.getResponseHeader("etag"), v && (ia.etag[g] = v)), 204 === a ? x = "nocontent": 304 === a ? x = "notmodified": (x = t.state, l = t.data, s = t.error, f = !s)) : (s = x, (a || !x) && (x = "error", 0 > a && (a = 0))), w.status = a, w.statusText = (c || x) + "", f ? p.resolveWith(n, [l, x, w]) : p.rejectWith(n, [w, x, s]), w.statusCode(r), r = b, j && o.trigger(f ? "ajaxSuccess": "ajaxError", [w, m, f ? l: s]), q.fireWith(n, [w, x]), j && (o.trigger("ajaxComplete", [w, m]), --ia.active || ia.event.trigger("ajaxStop")))
                }
                "object" == typeof a && (c = a, a = b),
                c = c || {};
                var e, f, g, h, i, j, k, l, m = ia.ajaxSetup({},
                c),
                n = m.context || m,
                o = m.context && (n.nodeType || n.jquery) ? ia(n) : ia.event,
                p = ia.Deferred(),
                q = ia.Callbacks("once memory"),
                r = m.statusCode || {},
                s = {},
                t = {},
                u = 0,
                v = "canceled",
                w = {
                    readyState: 0,
                    getResponseHeader: function(a) {
                        var b;
                        if (2 === u) {
                            if (!l) for (l = {}; b = Kb.exec(h);) l[b[1].toLowerCase()] = b[2];
                            b = l[a.toLowerCase()]
                        }
                        return null == b ? null: b
                    },
                    getAllResponseHeaders: function() {
                        return 2 === u ? h: null
                    },
                    setRequestHeader: function(a, b) {
                        var c = a.toLowerCase();
                        return u || (a = t[c] = t[c] || a, s[a] = b),
                        this
                    },
                    overrideMimeType: function(a) {
                        return u || (m.mimeType = a),
                        this
                    },
                    statusCode: function(a) {
                        var b;
                        if (a) if (2 > u) for (b in a) r[b] = [r[b], a[b]];
                        else w.always(a[w.status]);
                        return this
                    },
                    abort: function(a) {
                        var b = a || v;
                        return k && k.abort(b),
                        d(0, b),
                        this
                    }
                };
                if (p.promise(w).complete = q.add, w.success = w.done, w.error = w.fail, m.url = ((a || m.url || Fb) + "").replace(Ib, "").replace(Nb, Eb[1] + "//"), m.type = c.method || c.type || m.method || m.type, m.dataTypes = ia.trim(m.dataType || "*").toLowerCase().match(ka) || [""], null == m.crossDomain && (e = Ob.exec(m.url.toLowerCase()), m.crossDomain = !(!e || e[1] === Eb[1] && e[2] === Eb[2] && (e[3] || ("http:" === e[1] ? 80 : 443)) == (Eb[3] || ("http:" === Eb[1] ? 80 : 443)))), m.data && m.processData && "string" != typeof m.data && (m.data = ia.param(m.data, m.traditional)), G(Qb, m, c, w), 2 === u) return w;
                j = m.global,
                j && 0 === ia.active++&&ia.event.trigger("ajaxStart"),
                m.type = m.type.toUpperCase(),
                m.hasContent = !Mb.test(m.type),
                g = m.url,
                m.hasContent || (m.data && (g = m.url += (Hb.test(g) ? "&": "?") + m.data, delete m.data), m.cache === !1 && (m.url = Jb.test(g) ? g.replace(Jb, "$1_=" + Gb++) : g + (Hb.test(g) ? "&": "?") + "_=" + Gb++)),
                m.ifModified && (ia.lastModified[g] && w.setRequestHeader("If-Modified-Since", ia.lastModified[g]), ia.etag[g] && w.setRequestHeader("If-None-Match", ia.etag[g])),
                (m.data && m.hasContent && m.contentType !== !1 || c.contentType) && w.setRequestHeader("Content-Type", m.contentType),
                w.setRequestHeader("Accept", m.dataTypes[0] && m.accepts[m.dataTypes[0]] ? m.accepts[m.dataTypes[0]] + ("*" !== m.dataTypes[0] ? ", " + Sb + "; q=0.01": "") : m.accepts["*"]);
                for (f in m.headers) w.setRequestHeader(f, m.headers[f]);
                if (m.beforeSend && (m.beforeSend.call(n, w, m) === !1 || 2 === u)) return w.abort();
                v = "abort";
                for (f in {
                    success: 1,
                    error: 1,
                    complete: 1
                }) w[f](m[f]);
                if (k = G(Rb, m, c, w)) {
                    w.readyState = 1,
                    j && o.trigger("ajaxSend", [w, m]),
                    m.async && m.timeout > 0 && (i = setTimeout(function() {
                        w.abort("timeout")
                    },
                    m.timeout));
                    try {
                        u = 1,
                        k.send(s, d)
                    } catch(x) {
                        if (! (2 > u)) throw x;
                        d( - 1, x)
                    }
                } else d( - 1, "No Transport");
                return w
            },
            getScript: function(a, c) {
                return ia.get(a, b, c, "script")
            },
            getJSON: function(a, b, c) {
                return ia.get(a, b, c, "json")
            }
        }),
        ia.ajaxSetup({
            accepts: {
                script: "text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"
            },
            contents: {
                script: /(?:java|ecma)script/
            },
            converters: {
                "text script": function(a) {
                    return ia.globalEval(a),
                    a
                }
            }
        }),
        ia.ajaxPrefilter("script",
        function(a) {
            a.cache === b && (a.cache = !1),
            a.crossDomain && (a.type = "GET", a.global = !1)
        }),
        ia.ajaxTransport("script",
        function(a) {
            if (a.crossDomain) {
                var c, d = W.head || ia("head")[0] || W.documentElement;
                return {
                    send: function(b, e) {
                        c = W.createElement("script"),
                        c.async = !0,
                        a.scriptCharset && (c.charset = a.scriptCharset),
                        c.src = a.url,
                        c.onload = c.onreadystatechange = function(a, b) { (b || !c.readyState || /loaded|complete/.test(c.readyState)) && (c.onload = c.onreadystatechange = null, c.parentNode && c.parentNode.removeChild(c), c = null, b || e(200, "success"))
                        },
                        d.insertBefore(c, d.firstChild)
                    },
                    abort: function() {
                        c && c.onload(b, !0)
                    }
                }
            }
        });
        var Ub = [],
        Vb = /(=)\?(?=&|$)|\?\?/;
        ia.ajaxSetup({
            jsonp: "callback",
            jsonpCallback: function() {
                var a = Ub.pop() || ia.expando + "_" + Gb++;
                return this[a] = !0,
                a
            }
        }),
        ia.ajaxPrefilter("json jsonp",
        function(c, d, e) {
            var f, g, h, i = c.jsonp !== !1 && (Vb.test(c.url) ? "url": "string" == typeof c.data && !(c.contentType || "").indexOf("application/x-www-form-urlencoded") && Vb.test(c.data) && "data");
            return i || "jsonp" === c.dataTypes[0] ? (f = c.jsonpCallback = ia.isFunction(c.jsonpCallback) ? c.jsonpCallback() : c.jsonpCallback, i ? c[i] = c[i].replace(Vb, "$1" + f) : c.jsonp !== !1 && (c.url += (Hb.test(c.url) ? "&": "?") + c.jsonp + "=" + f), c.converters["script json"] = function() {
                return h || ia.error(f + " was not called"),
                h[0]
            },
            c.dataTypes[0] = "json", g = a[f], a[f] = function() {
                h = arguments
            },
            e.always(function() {
                a[f] = g,
                c[f] && (c.jsonpCallback = d.jsonpCallback, Ub.push(f)),
                h && ia.isFunction(g) && g(h[0]),
                h = g = b
            }), "script") : void 0
        });
        var Wb, Xb, Yb = /^(?:toggle|show|hide)$/,
        Zb = new RegExp("^(?:([+-])=|)(" + ja + ")([a-z%]*)$", "i"),
        $b = /queueHooks$/,
        _b = [O],
        ac = {
            "*": [function(a, b) {
                var c, d, e = this.createTween(a, b),
                f = Zb.exec(b),
                g = e.cur(),
                h = +g || 0,
                i = 1,
                j = 20;
                if (f) {
                    if (c = +f[2], d = f[3] || (ia.cssNumber[a] ? "": "px"), "px" !== d && h) {
                        h = ia.css(e.elem, a, !0) || c || 1;
                        do i = i || ".5",
                        h /= i,
                        ia.style(e.elem, a, h + d);
                        while (i !== (i = e.cur() / g) && 1 !== i && --j)
                    }
                    e.unit = d,
                    e.start = h,
                    e.end = f[1] ? h + (f[1] + 1) * c: c
                }
                return e
            }]
        };
        ia.Animation = ia.extend(M, {
            tweener: function(a, b) {
                ia.isFunction(a) ? (b = a, a = ["*"]) : a = a.split(" ");
                for (var c, d = 0,
                e = a.length; e > d; d++) c = a[d],
                ac[c] = ac[c] || [],
                ac[c].unshift(b)
            },
            prefilter: function(a, b) {
                b ? _b.unshift(a) : _b.push(a)
            }
        }),
        ia.Tween = P,
        P.prototype = {
            constructor: P,
            init: function(a, b, c, d, e, f) {
                this.elem = a,
                this.prop = c,
                this.easing = e || "swing",
                this.options = b,
                this.start = this.now = this.cur(),
                this.end = d,
                this.unit = f || (ia.cssNumber[c] ? "": "px")
            },
            cur: function() {
                var a = P.propHooks[this.prop];
                return a && a.get ? a.get(this) : P.propHooks._default.get(this)
            },
            run: function(a) {
                var b, c = P.propHooks[this.prop];
                return this.options.duration ? this.pos = b = ia.easing[this.easing](a, this.options.duration * a, 0, 1, this.options.duration) : this.pos = b = a,
                this.now = (this.end - this.start) * b + this.start,
                this.options.step && this.options.step.call(this.elem, this.now, this),
                c && c.set ? c.set(this) : P.propHooks._default.set(this),
                this
            }
        },
        P.prototype.init.prototype = P.prototype,
        P.propHooks = {
            _default: {
                get: function(a) {
                    var b;
                    return null == a.elem[a.prop] || a.elem.style && null != a.elem.style[a.prop] ? (b = ia.css(a.elem, a.prop, ""), b && "auto" !== b ? b: 0) : a.elem[a.prop]
                },
                set: function(a) {
                    ia.fx.step[a.prop] ? ia.fx.step[a.prop](a) : a.elem.style && (null != a.elem.style[ia.cssProps[a.prop]] || ia.cssHooks[a.prop]) ? ia.style(a.elem, a.prop, a.now + a.unit) : a.elem[a.prop] = a.now
                }
            }
        },
        P.propHooks.scrollTop = P.propHooks.scrollLeft = {
            set: function(a) {
                a.elem.nodeType && a.elem.parentNode && (a.elem[a.prop] = a.now)
            }
        },
        ia.each(["toggle", "show", "hide"],
        function(a, b) {
            var c = ia.fn[b];
            ia.fn[b] = function(a, d, e) {
                return null == a || "boolean" == typeof a ? c.apply(this, arguments) : this.animate(Q(b, !0), a, d, e)
            }
        }),
        ia.fn.extend({
            fadeTo: function(a, b, c, d) {
                return this.filter(x).css("opacity", 0).show().end().animate({
                    opacity: b
                },
                a, c, d)
            },
            animate: function(a, b, c, d) {
                var e = ia.isEmptyObject(a),
                f = ia.speed(b, c, d),
                g = function() {
                    var b = M(this, ia.extend({},
                    a), f);
                    g.finish = function() {
                        b.stop(!0)
                    },
                    (e || ia._data(this, "finish")) && b.stop(!0)
                };
                return g.finish = g,
                e || f.queue === !1 ? this.each(g) : this.queue(f.queue, g)
            },
            stop: function(a, c, d) {
                var e = function(a) {
                    var b = a.stop;
                    delete a.stop,
                    b(d)
                };
                return "string" != typeof a && (d = c, c = a, a = b),
                c && a !== !1 && this.queue(a || "fx", []),
                this.each(function() {
                    var b = !0,
                    c = null != a && a + "queueHooks",
                    f = ia.timers,
                    g = ia._data(this);
                    if (c) g[c] && g[c].stop && e(g[c]);
                    else for (c in g) g[c] && g[c].stop && $b.test(c) && e(g[c]);
                    for (c = f.length; c--;) f[c].elem !== this || null != a && f[c].queue !== a || (f[c].anim.stop(d), b = !1, f.splice(c, 1)); (b || !d) && ia.dequeue(this, a)
                })
            },
            finish: function(a) {
                return a !== !1 && (a = a || "fx"),
                this.each(function() {
                    var b, c = ia._data(this),
                    d = c[a + "queue"],
                    e = c[a + "queueHooks"],
                    f = ia.timers,
                    g = d ? d.length: 0;
                    for (c.finish = !0, ia.queue(this, a, []), e && e.cur && e.cur.finish && e.cur.finish.call(this), b = f.length; b--;) f[b].elem === this && f[b].queue === a && (f[b].anim.stop(!0), f.splice(b, 1));
                    for (b = 0; g > b; b++) d[b] && d[b].finish && d[b].finish.call(this);
                    delete c.finish
                })
            }
        }),
        ia.each({
            slideDown: Q("show"),
            slideUp: Q("hide"),
            slideToggle: Q("toggle"),
            fadeIn: {
                opacity: "show"
            },
            fadeOut: {
                opacity: "hide"
            },
            fadeToggle: {
                opacity: "toggle"
            }
        },
        function(a, b) {
            ia.fn[a] = function(a, c, d) {
                return this.animate(b, a, c, d)
            }
        }),
        ia.speed = function(a, b, c) {
            var d = a && "object" == typeof a ? ia.extend({},
            a) : {
                complete: c || !c && b || ia.isFunction(a) && a,
                duration: a,
                easing: c && b || b && !ia.isFunction(b) && b
            };
            return d.duration = ia.fx.off ? 0 : "number" == typeof d.duration ? d.duration: d.duration in ia.fx.speeds ? ia.fx.speeds[d.duration] : ia.fx.speeds._default,
            (null == d.queue || d.queue === !0) && (d.queue = "fx"),
            d.old = d.complete,
            d.complete = function() {
                ia.isFunction(d.old) && d.old.call(this),
                d.queue && ia.dequeue(this, d.queue)
            },
            d
        },
        ia.easing = {
            linear: function(a) {
                return a
            },
            swing: function(a) {
                return.5 - Math.cos(a * Math.PI) / 2
            }
        },
        ia.timers = [],
        ia.fx = P.prototype.init,
        ia.fx.tick = function() {
            var a, c = ia.timers,
            d = 0;
            for (Wb = ia.now(); d < c.length; d++) a = c[d],
            a() || c[d] !== a || c.splice(d--, 1);
            c.length || ia.fx.stop(),
            Wb = b
        },
        ia.fx.timer = function(a) {
            a() && ia.timers.push(a) && ia.fx.start()
        },
        ia.fx.interval = 13,
        ia.fx.start = function() {
            Xb || (Xb = setInterval(ia.fx.tick, ia.fx.interval))
        },
        ia.fx.stop = function() {
            clearInterval(Xb),
            Xb = null
        },
        ia.fx.speeds = {
            slow: 600,
            fast: 200,
            _default: 400
        },
        ia.fx.step = {},
        ia.expr && ia.expr.filters && (ia.expr.filters.animated = function(a) {
            return ia.grep(ia.timers,
            function(b) {
                return a === b.elem
            }).length
        }),
        ia.fn.offset = function(a) {
            if (arguments.length) return a === b ? this: this.each(function(b) {
                ia.offset.setOffset(this, a, b)
            });
            var c, d, e = {
                top: 0,
                left: 0
            },
            f = this[0],
            g = f && f.ownerDocument;
            if (g) return c = g.documentElement,
            ia.contains(c, f) ? (typeof f.getBoundingClientRect !== U && (e = f.getBoundingClientRect()), d = R(g), {
                top: e.top + (d.pageYOffset || c.scrollTop) - (c.clientTop || 0),
                left: e.left + (d.pageXOffset || c.scrollLeft) - (c.clientLeft || 0)
            }) : e
        },
        ia.offset = {
            setOffset: function(a, b, c) {
                var d = ia.css(a, "position");
                "static" === d && (a.style.position = "relative");
                var e, f, g = ia(a),
                h = g.offset(),
                i = ia.css(a, "top"),
                j = ia.css(a, "left"),
                k = ("absolute" === d || "fixed" === d) && ia.inArray("auto", [i, j]) > -1,
                l = {},
                m = {};
                k ? (m = g.position(), e = m.top, f = m.left) : (e = parseFloat(i) || 0, f = parseFloat(j) || 0),
                ia.isFunction(b) && (b = b.call(a, c, h)),
                null != b.top && (l.top = b.top - h.top + e),
                null != b.left && (l.left = b.left - h.left + f),
                "using" in b ? b.using.call(a, l) : g.css(l)
            }
        },
        ia.fn.extend({
            position: function() {
                if (this[0]) {
                    var a, b, c = {
                        top: 0,
                        left: 0
                    },
                    d = this[0];
                    return "fixed" === ia.css(d, "position") ? b = d.getBoundingClientRect() : (a = this.offsetParent(), b = this.offset(), ia.nodeName(a[0], "html") || (c = a.offset()), c.top += ia.css(a[0], "borderTopWidth", !0), c.left += ia.css(a[0], "borderLeftWidth", !0)),
                    {
                        top: b.top - c.top - ia.css(d, "marginTop", !0),
                        left: b.left - c.left - ia.css(d, "marginLeft", !0)
                    }
                }
            },
            offsetParent: function() {
                return this.map(function() {
                    for (var a = this.offsetParent || X; a && !ia.nodeName(a, "html") && "static" === ia.css(a, "position");) a = a.offsetParent;
                    return a || X
                })
            }
        }),
        ia.each({
            scrollLeft: "pageXOffset",
            scrollTop: "pageYOffset"
        },
        function(a, c) {
            var d = /Y/.test(c);
            ia.fn[a] = function(e) {
                return ia.access(this,
                function(a, e, f) {
                    var g = R(a);
                    return f === b ? g ? c in g ? g[c] : g.document.documentElement[e] : a[e] : void(g ? g.scrollTo(d ? ia(g).scrollLeft() : f, d ? f: ia(g).scrollTop()) : a[e] = f)
                },
                a, e, arguments.length, null)
            }
        }),
        ia.each({
            Height: "height",
            Width: "width"
        },
        function(a, c) {
            ia.each({
                padding: "inner" + a,
                content: c,
                "": "outer" + a
            },
            function(d, e) {
                ia.fn[e] = function(e, f) {
                    var g = arguments.length && (d || "boolean" != typeof e),
                    h = d || (e === !0 || f === !0 ? "margin": "border");
                    return ia.access(this,
                    function(c, d, e) {
                        var f;
                        return ia.isWindow(c) ? c.document.documentElement["client" + a] : 9 === c.nodeType ? (f = c.documentElement, Math.max(c.body["scroll" + a], f["scroll" + a], c.body["offset" + a], f["offset" + a], f["client" + a])) : e === b ? ia.css(c, d, h) : ia.style(c, d, e, h)
                    },
                    c, g ? e: b, g, null)
                }
            })
        }),
        c.exports = ia,
        "function" == typeof define && define.amd && define.amd.jQuery && define("jquery", [],
        function() {
            return ia
        })
    } (window)
}),
__tk__define("lib/jquery.popunder", ["./jquery"],
function(a, b, c) {
    var d = a("./jquery"); !
    function(a, b, c, d, e) {
        "use strict";
        a.popunder = function(c, d, e, f) {
            var g = a.popunder.helper,
            h = "undefined";
            if (0 === arguments.length && (c = b.aPopunder), e || d) g.bindEvents(c, d, e);
            else if (c = "function" == typeof c ? c(f) : c, (g.ua.ie === !0 || g.ua.g === !0) && (c = g.handleTargetBlank(c, f)), g.reset(), typeof c !== h) {
                do g.queue(c);
                while (c.length > 0);
                g.queue(c)
            }
            return a
        },
        a.popunder.helper = {
            _top: b.self,
            lastWin: null,
            lastTarget: null,
            f: !1,
            last: !1,
            b: "about:blank",
            o: null,
            du: "__jqpu",
            ua: {
                ie: !!/msie|trident/i.test(d.userAgent),
                oldIE: !!/msie/i.test(d.userAgent),
                ff: !!/firefox/i.test(d.userAgent),
                o: !!/opera/i.test(d.userAgent),
                g: !!/chrome/i.test(d.userAgent),
                w: !!/webkit/i.test(d.userAgent),
                fl: !!d.mimeTypes["application/x-shockwave-flash"]
            },
            m: {
                g: "tab"
            },
            hs: [],
            def: {
                window: {
                    toolbar: 0,
                    scrollbars: 1,
                    location: 1,
                    statusbar: 1,
                    menubar: 0,
                    resizable: 1,
                    width: (c.availWidth - 122).toString(),
                    height: (c.availHeight - 122).toString(),
                    screenX: 0,
                    screenY: 0,
                    left: 0,
                    top: 0
                },
                name: "__pu",
                cookie: "__puc",
                blocktime: !1,
                skip: {
                    opera: !0,
                    ipad: !0
                },
                cb: null,
                fs: !1,
                popup: !1
            },
            setMethod: function(a, b) {
                var c = this;
                return c.m[a] = b,
                c
            },
            uaTest: function(a) {
                return !! new RegExp(a, "i").test(d.userAgent.toString())
            },
            queue: function(a) {
                var b = !1,
                c = this;
                if (a.length > 0) for (; b === !1;) {
                    var d = a.shift();
                    b = d ? c.open(d[0], d[1] || {},
                    a.length) : !0
                } else c.last === !1 ? (c.last = !0, c.bg().href(!0)) : c.f || c.ua.g || c.ua.ie || c.bg();
                return c
            },
            handler: function(a, b) {
                var c = this;
                "function" == typeof c.hs[a] && c.hs[a](b)
            },
            getTrigger: function(b) {
                return a("#" + b).parents(".jq-pu").children().eq(0)
            },
            trigger: function(a) {
                this.getTrigger(a).trigger("click")
            },
            bindEvents: function(b, c, d) {
                var e = this,
                f = "string",
                g = e.hs.length,
                h = function(a) {
                    return function(b) {
                        e.handler(a, b)
                    }
                } (g);
                return e.hs[g] = function(b) {
                    return function(c) {
                        return c && !c.target && (c = {
                            target: e.getTrigger(c)
                        }),
                        a.popunder(b, !1, !1, c),
                        !0
                    }
                } (b),
                c && !e.ua.g && (c = typeof c === f ? a(c) : c, c.on("submit", h)),
                d && (d = typeof d === f ? a(d) : d, d.on("click", h), e.ua.g && e.def.fs && e.ua.fl && e.overlay(d, g)),
                e
            },
            overlay: function(b, c) {
                var d = this;
                return b.each(function() {
                    var b = a(this),
                    e = "absolute",
                    f = b.css("position") === e ? "": "position:relative;",
                    g = d.rand("pub"),
                    h = b.wrap('<div class="jq-pu" style="display:inline-block; ' + f + '" />').parent(),
                    i = a('<object id="' + g + '" type="application/x-shockwave-flash" data="' + d.def.fs + '" />').css(a.extend(!0, {},
                    {
                        position: e,
                        cursor: "pointer",
                        top: f ? 0 : b.css("top"),
                        left: f ? 0 : b.css("left"),
                        padding: b.css("padding"),
                        margin: b.css("margin"),
                        width: b.width(),
                        height: b.height()
                    }));
                    i.append('<param name="wmode" value="transparent" />'),
                    i.append('<param name="menu" value="false" />'),
                    i.append('<param name="flashvars" value="id=' + g + "&hs=" + c + '" /">'),
                    h.append(i)
                }),
                d
            },
            cookieCheck: function(b, c) {
                var d = this,
                e = d.rand(c.cookie, !1),
                f = a.cookie(e),
                g = !1;
                return f ? -1 === f.indexOf(b) ? f += b: g = !0 : f = b,
                a.cookie(e, f, {
                    expires: new Date((new Date).getTime() + 6e4 * c.blocktime)
                }),
                g
            },
            rand: function(a, b) {
                var c = this,
                d = a ? a: c.du;
                return d + (b === !1 ? "": Math.floor(89999999 * Math.random() + 1e7).toString()).replace(".", "")
            },
            open: function(c, d, e) {
                var f, g, h, i = this,
                j = "function";
                if (g = a.extend(!0, {},
                i.def, d), h = g.skip, i.o = c, top !== b.self) try {
                    top.document.location.toString() && (i._top = top)
                } catch(k) {}
                for (f in h) if (h.hasOwnProperty(f) && h[f] === !0 && i.uaTest(f)) return ! 1;
                return g.blocktime && typeof a.cookie === j && i.cookieCheck(c, g) ? !1 : (i.ua.g === !0 && "simple" !== i.ua.g && b.open("javascript:window.focus()", "_self", ""), c !== i.du && (i.lastTarget = c, i.ua.g === !0 && "tab" === i.m.g ? i.switcher.tab(i, i.o) : i.lastWin = i._top.window.open(i.o, i.rand(g.name, !d.name), i.getOptions(g.window)) || i.lastWin, i.ua.ff === !0 && i.bg(), i.href(e), typeof g.cb === j && g.cb()), !0)
            },
            bg: function(a) {
                var b = this;
                return b.lastWin && b.lastTarget && !a ? b.ua.ie === !0 ? b.switcher.simple(b) : b.ua.g || b.switcher.pop(b) : "oc" === a && b.switcher.pop(b),
                b
            },
            switcher: {
                simple: function(a) {
                    try {
                        a.lastWin.blur()
                    } catch(c) {}
                    b.focus()
                },
                pop: function(a) { !
                    function(b) {
                        try {
                            a.f = b.window.open("about:blank"),
                            a.f && a.f.close()
                        } catch(c) {}
                        try {
                            b.opener.window.focus()
                        } catch(c) {}
                    } (a.lastWin)
                },
                tab: function(c, d) {
                    var f = d ? d: "data:text/html,<script>window.close();</script>;",
                    g = !d,
                    h = a("<a/>", {
                        href: f
                    }).appendTo(e.body),
                    i = e.createEvent("MouseEvents");
                    return g = "tab" === c.m.g ? !g: g,
                    i.initMouseEvent("click", !0, !0, b, 0, 0, 0, 0, 0, g, !1, !g, g, 0, null),
                    h[0].dispatchEvent(i),
                    h[0].parentNode.removeChild(h[0]),
                    c
                }
            },
            href: function(a) {
                var b, c = this;
                return a && c.lastTarget && c.lastWin && c.lastTarget !== c.b && c.lastTarget !== c.o && (c.ua.g === !0 && "simple" !== c.m.g ? (b = c.lastWin.document, b.open(), b.write("<html><head><title>" + e.title + '</title><script type="text/javascript">window.location="' + c.lastTarget + '";</script></head><body></body></html>'), b.close()) : c.lastWin.document.location.href = c.lastTarget),
                c
            },
            handleTargetBlank: function(b, c) {
                if (c && "undefined" != typeof c.target) {
                    var d, e = this,
                    f = null,
                    g = a(c.target);
                    g.is('input[type="submit"]') === !0 && (f = c.target.form),
                    f && "_blank" === f.target && (d = e.du, e.ua.ie && (d = f.action + "/?" + a(f).serialize()), b.unshift([d, {
                        popup: !0
                    }]))
                }
                return b
            },
            reset: function() {
                var a = this;
                return a.f = a.last = !1,
                a.lastTarget = a.lastWin = null,
                a
            },
            getOptions: function(a) {
                var b, c = [];
                for (b in a) a.hasOwnProperty(b) && c.push(b + "=" + a[b]);
                return c.join(",")
            }
        }
    } (d, window, screen, navigator, document)
}),
__tk__define("lib/jquery.tmpl", ["./jquery"],
function(a, b, c) {
    var d = a("./jquery"); !
    function(a, b) {
        function c(b, c, d, e) {
            var f = {
                data: e || 0 === e || e === !1 ? e: c ? c.data: {},
                _wrap: c ? c._wrap: null,
                tmpl: null,
                parent: c || null,
                nodes: [],
                calls: k,
                nest: l,
                wrap: m,
                html: n,
                update: o
            };
            return b && a.extend(f, b, {
                nodes: [],
                parent: c
            }),
            d && (f.tmpl = d, f._ctnt = f._ctnt || f.tmpl(a, f), f.key = ++w, (y.length ? u: t)[w] = f),
            f
        }
        function d(b, c, f) {
            var g, h = f ? a.map(f,
            function(a) {
                return "string" == typeof a ? b.key ? a.replace(/(<\w+)(?=[\s>])(?![^>]*_tmplitem)([^>]*)/g, "$1 " + r + '="' + b.key + '" $2') : a: d(a, b, a._ctnt)
            }) : b;
            return c ? h: (h = h.join(""), h.replace(/^\s*([^<\s][^<]*)?(<[\w\W]+>)([^>]*[^>\s])?\s*$/,
            function(b, c, d, f) {
                g = a(d).get(),
                j(g),
                c && (g = e(c).concat(g)),
                f && (g = g.concat(e(f)))
            }), g ? g: e(h))
        }
        function e(b) {
            var c = document.createElement("div");
            return c.innerHTML = b,
            a.makeArray(c.childNodes)
        }
        function f(b) {
            return new Function("jQuery", "$item", "var $=jQuery,call,__=[],$data=$item.data;with($data){__.push('" + a.trim(b).replace(/([\\'])/g, "\\$1").replace(/[\r\t\n]/g, " ").replace(/\$\{([^\}]*)\}/g, "{{= $1}}").replace(/\{\{(\/?)(\w+|.)(?:\(((?:[^\}]|\}(?!\}))*?)?\))?(?:\s+(.*?)?)?(\(((?:[^\}]|\}(?!\}))*?)\))?\s*\}\}/g,
            function(b, c, d, e, f, g, i) {
                var j, k, l, m = a.tmpl.tag[d];
                if (!m) throw "Unknown template tag: " + d;
                return j = m._default || [],
                g && !/\w$/.test(f) && (f += g, g = ""),
                f ? (f = h(f), i = i ? "," + h(i) + ")": g ? ")": "", k = g ? f.indexOf(".") > -1 ? f + h(g) : "(" + f + ").call($item" + i: f, l = g ? k: "(typeof(" + f + ")==='function'?(" + f + ").call($item):(" + f + "))") : l = k = j.$1 || "null",
                e = h(e),
                "');" + m[c ? "close": "open"].split("$notnull_1").join(f ? "typeof(" + f + ")!=='undefined' && (" + f + ")!=null": "true").split("$1a").join(l).split("$1").join(k).split("$2").join(e || j.$2 || "") + "__.push('"
            }) + "');}return __;")
        }
        function g(b, c) {
            b._wrap = d(b, !0, a.isArray(c) ? c: [s.test(c) ? c: a(c).html()]).join("")
        }
        function h(a) {
            return a ? a.replace(/\\'/g, "'").replace(/\\\\/g, "\\") : null
        }
        function i(a) {
            var b = document.createElement("div");
            return b.appendChild(a.cloneNode(!0)),
            b.innerHTML
        }
        function j(b) {
            function d(b) {
                function d(a) {
                    a += j,
                    g = k[a] = k[a] || c(g, t[g.parent.key + j] || g.parent)
                }
                var e, f, g, h, i = b;
                if (h = b.getAttribute(r)) {
                    for (; i.parentNode && 1 === (i = i.parentNode).nodeType && !(e = i.getAttribute(r)););
                    e !== h && (i = i.parentNode ? 11 === i.nodeType ? 0 : i.getAttribute(r) || 0 : 0, (g = t[h]) || (g = u[h], g = c(g, t[i] || u[i]), g.key = ++w, t[w] = g), x && d(h)),
                    b.removeAttribute(r)
                } else x && (g = a.data(b, "tmplItem")) && (d(g.key), t[g.key] = g, i = a.data(b.parentNode, "tmplItem"), i = i ? i.key: 0);
                if (g) {
                    for (f = g; f && f.key != i;) f.nodes.push(b),
                    f = f.parent;
                    delete g._ctnt,
                    delete g._wrap,
                    a.data(b, "tmplItem", g)
                }
            }
            var e, f, g, h, i, j = "_" + x,
            k = {};
            for (g = 0, h = b.length; h > g; g++) if (1 === (e = b[g]).nodeType) {
                for (f = e.getElementsByTagName("*"), i = f.length - 1; i >= 0; i--) d(f[i]);
                d(e)
            }
        }
        function k(a, b, c, d) {
            return a ? void y.push({
                _: a,
                tmpl: b,
                item: this,
                data: c,
                options: d
            }) : y.pop()
        }
        function l(b, c, d) {
            return a.tmpl(a.template(b), c, d, this)
        }
        function m(b, c) {
            var d = b.options || {};
            return d.wrapped = c,
            a.tmpl(a.template(b.tmpl), b.data, d, b.item)
        }
        function n(b, c) {
            var d = this._wrap;
            return a.map(a(a.isArray(d) ? d.join("") : d).filter(b || "*"),
            function(a) {
                return c ? a.innerText || a.textContent: a.outerHTML || i(a)
            })
        }
        function o() {
            var b = this.nodes;
            a.tmpl(null, null, null, this).insertBefore(b[0]),
            a(b).remove()
        }
        var p, q = a.fn.domManip,
        r = "_tmplitem",
        s = /^[^<]*(<[\w\W]+>)[^>]*$|\{\{\! /,
        t = {},
        u = {},
        v = {
            key: 0,
            data: {}
        },
        w = 0,
        x = 0,
        y = [];
        a.each({
            appendTo: "append",
            prependTo: "prepend",
            insertBefore: "before",
            insertAfter: "after",
            replaceAll: "replaceWith"
        },
        function(b, c) {
            a.fn[b] = function(d) {
                var e, f, g, h, i = [],
                j = a(d),
                k = 1 === this.length && this[0].parentNode;
                if (p = t || {},
                k && 11 === k.nodeType && 1 === k.childNodes.length && 1 === j.length) j[c](this[0]),
                i = this;
                else {
                    for (f = 0, g = j.length; g > f; f++) x = f,
                    e = (f > 0 ? this.clone(!0) : this).get(),
                    a(j[f])[c](e),
                    i = i.concat(e);
                    x = 0,
                    i = this.pushStack(i, b, j.selector)
                }
                return h = p,
                p = null,
                a.tmpl.complete(h),
                i
            }
        }),
        a.fn.extend({
            tmpl: function(b, c, d) {
                return a.tmpl(this[0], b, c, d)
            },
            tmplItem: function() {
                return a.tmplItem(this[0])
            },
            template: function(b) {
                return a.template(b, this[0])
            },
            domManip: function(b, c, d, e) {
                if (b[0] && a.isArray(b[0])) {
                    for (var f, g = a.makeArray(arguments), h = b[0], i = h.length, j = 0; i > j && !(f = a.data(h[j++], "tmplItem")););
                    f && x && (g[2] = function(b) {
                        a.tmpl.afterManip(this, b, d)
                    }),
                    q.apply(this, g)
                } else q.apply(this, arguments);
                return x = 0,
                p || a.tmpl.complete(t),
                this
            }
        }),
        a.extend({
            tmpl: function(b, e, f, h) {
                var i, j = !h;
                if (j) h = v,
                b = a.template[b] || a.template(null, b),
                u = {};
                else if (!b) return b = h.tmpl,
                t[h.key] = h,
                h.nodes = [],
                h.wrapped && g(h, h.wrapped),
                a(d(h, null, h.tmpl(a, h)));
                return b ? ("function" == typeof e && (e = e.call(h || {})), f && f.wrapped && g(f, f.wrapped), i = a.isArray(e) ? a.map(e,
                function(a) {
                    return a ? c(f, h, b, a) : null
                }) : [c(f, h, b, e)], j ? a(d(h, null, i)) : i) : []
            },
            tmplItem: function(b) {
                var c;
                for (b instanceof a && (b = b[0]); b && 1 === b.nodeType && !(c = a.data(b, "tmplItem")) && (b = b.parentNode););
                return c || v
            },
            template: function(b, c) {
                return c ? ("string" == typeof c ? c = f(c) : c instanceof a && (c = c[0] || {}), c.nodeType && (c = a.data(c, "tmpl") || a.data(c, "tmpl", f(c.innerHTML))), "string" == typeof b ? a.template[b] = c: c) : b ? "string" != typeof b ? a.template(null, b) : a.template[b] || a.template(null, s.test(b) ? b: a(b)) : null
            },
            encode: function(a) {
                return ("" + a).split("<").join("&lt;").split(">").join("&gt;").split('"').join("&#34;").split("'").join("&#39;")
            }
        }),
        a.extend(a.tmpl, {
            tag: {
                tmpl: {
                    _default: {
                        $2: "null"
                    },
                    open: "if($notnull_1){__=__.concat($item.nest($1,$2));}"
                },
                wrap: {
                    _default: {
                        $2: "null"
                    },
                    open: "$item.calls(__,$1,$2);__=[];",
                    close: "call=$item.calls();__=call._.concat($item.wrap(call,__));"
                },
                each: {
                    _default: {
                        $2: "$index, $value"
                    },
                    open: "if($notnull_1){$.each($1a,function($2){with(this){",
                    close: "}});}"
                },
                "if": {
                    open: "if(($notnull_1) && $1a){",
                    close: "}"
                },
                "else": {
                    _default: {
                        $1: "true"
                    },
                    open: "}else if(($notnull_1) && $1a){"
                },
                html: {
                    open: "if($notnull_1){__.push($1a);}"
                },
                "=": {
                    _default: {
                        $1: "$data"
                    },
                    open: "if($notnull_1){__.push($.encode($1a));}"
                },
                "!": {
                    open: ""
                }
            },
            complete: function(a) {
                t = {}
            },
            afterManip: function(b, c, d) {
                var e = 11 === c.nodeType ? a.makeArray(c.childNodes) : 1 === c.nodeType ? [c] : [];
                d.call(b, c),
                j(e),
                x++
            }
        })
    } (d)
}),
__tk__define("lib/underscore", [],
function(a, b, c) { (function() {
        var a = this,
        d = a._,
        e = {},
        f = Array.prototype,
        g = Object.prototype,
        h = Function.prototype,
        i = f.push,
        j = f.slice,
        k = f.concat,
        l = g.toString,
        m = g.hasOwnProperty,
        n = f.forEach,
        o = f.map,
        p = f.reduce,
        q = f.reduceRight,
        r = f.filter,
        s = f.every,
        t = f.some,
        u = f.indexOf,
        v = f.lastIndexOf,
        w = Array.isArray,
        x = Object.keys,
        y = h.bind,
        z = function(a) {
            return a instanceof z ? a: this instanceof z ? void(this._wrapped = a) : new z(a)
        };
        "undefined" != typeof b ? ("undefined" != typeof c && c.exports && (b = c.exports = z), b._ = z) : a._ = z,
        z.VERSION = "1.4.4";
        var A = z.each = z.forEach = function(a, b, c) {
            if (null != a) if (n && a.forEach === n) a.forEach(b, c);
            else if (a.length === +a.length) {
                for (var d = 0,
                f = a.length; f > d; d++) if (b.call(c, a[d], d, a) === e) return
            } else for (var g in a) if (z.has(a, g) && b.call(c, a[g], g, a) === e) return
        };
        z.map = z.collect = function(a, b, c) {
            var d = [];
            return null == a ? d: o && a.map === o ? a.map(b, c) : (A(a,
            function(a, e, f) {
                d[d.length] = b.call(c, a, e, f)
            }), d)
        };
        var B = "Reduce of empty array with no initial value";
        z.reduce = z.foldl = z.inject = function(a, b, c, d) {
            var e = arguments.length > 2;
            if (null == a && (a = []), p && a.reduce === p) return d && (b = z.bind(b, d)),
            e ? a.reduce(b, c) : a.reduce(b);
            if (A(a,
            function(a, f, g) {
                e ? c = b.call(d, c, a, f, g) : (c = a, e = !0)
            }), !e) throw new TypeError(B);
            return c
        },
        z.reduceRight = z.foldr = function(a, b, c, d) {
            var e = arguments.length > 2;
            if (null == a && (a = []), q && a.reduceRight === q) return d && (b = z.bind(b, d)),
            e ? a.reduceRight(b, c) : a.reduceRight(b);
            var f = a.length;
            if (f !== +f) {
                var g = z.keys(a);
                f = g.length
            }
            if (A(a,
            function(h, i, j) {
                i = g ? g[--f] : --f,
                e ? c = b.call(d, c, a[i], i, j) : (c = a[i], e = !0)
            }), !e) throw new TypeError(B);
            return c
        },
        z.find = z.detect = function(a, b, c) {
            var d;
            return C(a,
            function(a, e, f) {
                return b.call(c, a, e, f) ? (d = a, !0) : void 0
            }),
            d
        },
        z.filter = z.select = function(a, b, c) {
            var d = [];
            return null == a ? d: r && a.filter === r ? a.filter(b, c) : (A(a,
            function(a, e, f) {
                b.call(c, a, e, f) && (d[d.length] = a)
            }), d)
        },
        z.reject = function(a, b, c) {
            return z.filter(a,
            function(a, d, e) {
                return ! b.call(c, a, d, e)
            },
            c)
        },
        z.every = z.all = function(a, b, c) {
            b || (b = z.identity);
            var d = !0;
            return null == a ? d: s && a.every === s ? a.every(b, c) : (A(a,
            function(a, f, g) {
                return (d = d && b.call(c, a, f, g)) ? void 0 : e
            }), !!d)
        };
        var C = z.some = z.any = function(a, b, c) {
            b || (b = z.identity);
            var d = !1;
            return null == a ? d: t && a.some === t ? a.some(b, c) : (A(a,
            function(a, f, g) {
                return d || (d = b.call(c, a, f, g)) ? e: void 0
            }), !!d)
        };
        z.contains = z.include = function(a, b) {
            return null == a ? !1 : u && a.indexOf === u ? -1 != a.indexOf(b) : C(a,
            function(a) {
                return a === b
            })
        },
        z.invoke = function(a, b) {
            var c = j.call(arguments, 2),
            d = z.isFunction(b);
            return z.map(a,
            function(a) {
                return (d ? b: a[b]).apply(a, c)
            })
        },
        z.pluck = function(a, b) {
            return z.map(a,
            function(a) {
                return a[b]
            })
        },
        z.where = function(a, b, c) {
            return z.isEmpty(b) ? c ? null: [] : z[c ? "find": "filter"](a,
            function(a) {
                for (var c in b) if (b[c] !== a[c]) return ! 1;
                return ! 0
            })
        },
        z.findWhere = function(a, b) {
            return z.where(a, b, !0)
        },
        z.max = function(a, b, c) {
            if (!b && z.isArray(a) && a[0] === +a[0] && a.length < 65535) return Math.max.apply(Math, a);
            if (!b && z.isEmpty(a)) return - (1 / 0);
            var d = {
                computed: -(1 / 0),
                value: -(1 / 0)
            };
            return A(a,
            function(a, e, f) {
                var g = b ? b.call(c, a, e, f) : a;
                g >= d.computed && (d = {
                    value: a,
                    computed: g
                })
            }),
            d.value
        },
        z.min = function(a, b, c) {
            if (!b && z.isArray(a) && a[0] === +a[0] && a.length < 65535) return Math.min.apply(Math, a);
            if (!b && z.isEmpty(a)) return 1 / 0;
            var d = {
                computed: 1 / 0,
                value: 1 / 0
            };
            return A(a,
            function(a, e, f) {
                var g = b ? b.call(c, a, e, f) : a;
                g < d.computed && (d = {
                    value: a,
                    computed: g
                })
            }),
            d.value
        },
        z.shuffle = function(a) {
            var b, c = 0,
            d = [];
            return A(a,
            function(a) {
                b = z.random(c++),
                d[c - 1] = d[b],
                d[b] = a
            }),
            d
        };
        var D = function(a) {
            return z.isFunction(a) ? a: function(b) {
                return b[a]
            }
        };
        z.sortBy = function(a, b, c) {
            var d = D(b);
            return z.pluck(z.map(a,
            function(a, b, e) {
                return {
                    value: a,
                    index: b,
                    criteria: d.call(c, a, b, e)
                }
            }).sort(function(a, b) {
                var c = a.criteria,
                d = b.criteria;
                if (c !== d) {
                    if (c > d || void 0 === c) return 1;
                    if (d > c || void 0 === d) return - 1
                }
                return a.index < b.index ? -1 : 1
            }), "value")
        };
        var E = function(a, b, c, d) {
            var e = {},
            f = D(b || z.identity);
            return A(a,
            function(b, g) {
                var h = f.call(c, b, g, a);
                d(e, h, b)
            }),
            e
        };
        z.groupBy = function(a, b, c) {
            return E(a, b, c,
            function(a, b, c) { (z.has(a, b) ? a[b] : a[b] = []).push(c)
            })
        },
        z.countBy = function(a, b, c) {
            return E(a, b, c,
            function(a, b) {
                z.has(a, b) || (a[b] = 0),
                a[b]++
            })
        },
        z.sortedIndex = function(a, b, c, d) {
            c = null == c ? z.identity: D(c);
            for (var e = c.call(d, b), f = 0, g = a.length; g > f;) {
                var h = f + g >>> 1;
                c.call(d, a[h]) < e ? f = h + 1 : g = h
            }
            return f
        },
        z.toArray = function(a) {
            return a ? z.isArray(a) ? j.call(a) : a.length === +a.length ? z.map(a, z.identity) : z.values(a) : []
        },
        z.size = function(a) {
            return null == a ? 0 : a.length === +a.length ? a.length: z.keys(a).length
        },
        z.first = z.head = z.take = function(a, b, c) {
            return null == a ? void 0 : null == b || c ? a[0] : j.call(a, 0, b)
        },
        z.initial = function(a, b, c) {
            return j.call(a, 0, a.length - (null == b || c ? 1 : b))
        },
        z.last = function(a, b, c) {
            return null == a ? void 0 : null == b || c ? a[a.length - 1] : j.call(a, Math.max(a.length - b, 0))
        },
        z.rest = z.tail = z.drop = function(a, b, c) {
            return j.call(a, null == b || c ? 1 : b)
        },
        z.compact = function(a) {
            return z.filter(a, z.identity)
        };
        var F = function(a, b, c) {
            return A(a,
            function(a) {
                z.isArray(a) ? b ? i.apply(c, a) : F(a, b, c) : c.push(a)
            }),
            c
        };
        z.flatten = function(a, b) {
            return F(a, b, [])
        },
        z.without = function(a) {
            return z.difference(a, j.call(arguments, 1))
        },
        z.uniq = z.unique = function(a, b, c, d) {
            z.isFunction(b) && (d = c, c = b, b = !1);
            var e = c ? z.map(a, c, d) : a,
            f = [],
            g = [];
            return A(e,
            function(c, d) { (b ? d && g[g.length - 1] === c: z.contains(g, c)) || (g.push(c), f.push(a[d]))
            }),
            f
        },
        z.union = function() {
            return z.uniq(k.apply(f, arguments))
        },
        z.intersection = function(a) {
            var b = j.call(arguments, 1);
            return z.filter(z.uniq(a),
            function(a) {
                return z.every(b,
                function(b) {
                    return z.indexOf(b, a) >= 0
                })
            })
        },
        z.difference = function(a) {
            var b = k.apply(f, j.call(arguments, 1));
            return z.filter(a,
            function(a) {
                return ! z.contains(b, a)
            })
        },
        z.zip = function() {
            for (var a = j.call(arguments), b = z.max(z.pluck(a, "length")), c = new Array(b), d = 0; b > d; d++) c[d] = z.pluck(a, "" + d);
            return c
        },
        z.object = function(a, b) {
            if (null == a) return {};
            for (var c = {},
            d = 0,
            e = a.length; e > d; d++) b ? c[a[d]] = b[d] : c[a[d][0]] = a[d][1];
            return c
        },
        z.indexOf = function(a, b, c) {
            if (null == a) return - 1;
            var d = 0,
            e = a.length;
            if (c) {
                if ("number" != typeof c) return d = z.sortedIndex(a, b),
                a[d] === b ? d: -1;
                d = 0 > c ? Math.max(0, e + c) : c
            }
            if (u && a.indexOf === u) return a.indexOf(b, c);
            for (; e > d; d++) if (a[d] === b) return d;
            return - 1
        },
        z.lastIndexOf = function(a, b, c) {
            if (null == a) return - 1;
            var d = null != c;
            if (v && a.lastIndexOf === v) return d ? a.lastIndexOf(b, c) : a.lastIndexOf(b);
            for (var e = d ? c: a.length; e--;) if (a[e] === b) return e;
            return - 1
        },
        z.range = function(a, b, c) {
            arguments.length <= 1 && (b = a || 0, a = 0),
            c = arguments[2] || 1;
            for (var d = Math.max(Math.ceil((b - a) / c), 0), e = 0, f = new Array(d); d > e;) f[e++] = a,
            a += c;
            return f
        },
        z.bind = function(a, b) {
            if (a.bind === y && y) return y.apply(a, j.call(arguments, 1));
            var c = j.call(arguments, 2);
            return function() {
                return a.apply(b, c.concat(j.call(arguments)))
            }
        },
        z.partial = function(a) {
            var b = j.call(arguments, 1);
            return function() {
                return a.apply(this, b.concat(j.call(arguments)))
            }
        },
        z.bindAll = function(a) {
            var b = j.call(arguments, 1);
            return 0 === b.length && (b = z.functions(a)),
            A(b,
            function(b) {
                a[b] = z.bind(a[b], a)
            }),
            a
        },
        z.memoize = function(a, b) {
            var c = {};
            return b || (b = z.identity),
            function() {
                var d = b.apply(this, arguments);
                return z.has(c, d) ? c[d] : c[d] = a.apply(this, arguments)
            }
        },
        z.delay = function(a, b) {
            var c = j.call(arguments, 2);
            return setTimeout(function() {
                return a.apply(null, c)
            },
            b)
        },
        z.defer = function(a) {
            return z.delay.apply(z, [a, 1].concat(j.call(arguments, 1)))
        },
        z.throttle = function(a, b) {
            var c, d, e, f, g = 0,
            h = function() {
                g = new Date,
                e = null,
                f = a.apply(c, d)
            };
            return function() {
                var i = new Date,
                j = b - (i - g);
                return c = this,
                d = arguments,
                0 >= j ? (clearTimeout(e), e = null, g = i, f = a.apply(c, d)) : e || (e = setTimeout(h, j)),
                f
            }
        },
        z.debounce = function(a, b, c) {
            var d, e;
            return function() {
                var f = this,
                g = arguments,
                h = function() {
                    d = null,
                    c || (e = a.apply(f, g))
                },
                i = c && !d;
                return clearTimeout(d),
                d = setTimeout(h, b),
                i && (e = a.apply(f, g)),
                e
            }
        },
        z.once = function(a) {
            var b, c = !1;
            return function() {
                return c ? b: (c = !0, b = a.apply(this, arguments), a = null, b)
            }
        },
        z.wrap = function(a, b) {
            return function() {
                var c = [a];
                return i.apply(c, arguments),
                b.apply(this, c)
            }
        },
        z.compose = function() {
            var a = arguments;
            return function() {
                for (var b = arguments,
                c = a.length - 1; c >= 0; c--) b = [a[c].apply(this, b)];
                return b[0]
            }
        },
        z.after = function(a, b) {
            return 0 >= a ? b() : function() {
                return--a < 1 ? b.apply(this, arguments) : void 0
            }
        },
        z.keys = x ||
        function(a) {
            if (a !== Object(a)) throw new TypeError("Invalid object");
            var b = [];
            for (var c in a) z.has(a, c) && (b[b.length] = c);
            return b
        },
        z.values = function(a) {
            var b = [];
            for (var c in a) z.has(a, c) && b.push(a[c]);
            return b
        },
        z.pairs = function(a) {
            var b = [];
            for (var c in a) z.has(a, c) && b.push([c, a[c]]);
            return b
        },
        z.invert = function(a) {
            var b = {};
            for (var c in a) z.has(a, c) && (b[a[c]] = c);
            return b
        },
        z.functions = z.methods = function(a) {
            var b = [];
            for (var c in a) z.isFunction(a[c]) && b.push(c);
            return b.sort()
        },
        z.extend = function(a) {
            return A(j.call(arguments, 1),
            function(b) {
                if (b) for (var c in b) a[c] = b[c]
            }),
            a
        },
        z.pick = function(a) {
            var b = {},
            c = k.apply(f, j.call(arguments, 1));
            return A(c,
            function(c) {
                c in a && (b[c] = a[c])
            }),
            b
        },
        z.omit = function(a) {
            var b = {},
            c = k.apply(f, j.call(arguments, 1));
            for (var d in a) z.contains(c, d) || (b[d] = a[d]);
            return b
        },
        z.defaults = function(a) {
            return A(j.call(arguments, 1),
            function(b) {
                if (b) for (var c in b) null == a[c] && (a[c] = b[c])
            }),
            a
        },
        z.clone = function(a) {
            return z.isObject(a) ? z.isArray(a) ? a.slice() : z.extend({},
            a) : a
        },
        z.tap = function(a, b) {
            return b(a),
            a
        };
        var G = function(a, b, c, d) {
            if (a === b) return 0 !== a || 1 / a == 1 / b;
            if (null == a || null == b) return a === b;
            a instanceof z && (a = a._wrapped),
            b instanceof z && (b = b._wrapped);
            var e = l.call(a);
            if (e != l.call(b)) return ! 1;
            switch (e) {
            case "[object String]":
                return a == String(b);
            case "[object Number]":
                return a != +a ? b != +b: 0 == a ? 1 / a == 1 / b: a == +b;
            case "[object Date]":
            case "[object Boolean]":
                return + a == +b;
            case "[object RegExp]":
                return a.source == b.source && a.global == b.global && a.multiline == b.multiline && a.ignoreCase == b.ignoreCase
            }
            if ("object" != typeof a || "object" != typeof b) return ! 1;
            for (var f = c.length; f--;) if (c[f] == a) return d[f] == b;
            c.push(a),
            d.push(b);
            var g = 0,
            h = !0;
            if ("[object Array]" == e) {
                if (g = a.length, h = g == b.length) for (; g--&&(h = G(a[g], b[g], c, d)););
            } else {
                var i = a.constructor,
                j = b.constructor;
                if (i !== j && !(z.isFunction(i) && i instanceof i && z.isFunction(j) && j instanceof j)) return ! 1;
                for (var k in a) if (z.has(a, k) && (g++, !(h = z.has(b, k) && G(a[k], b[k], c, d)))) break;
                if (h) {
                    for (k in b) if (z.has(b, k) && !g--) break;
                    h = !g
                }
            }
            return c.pop(),
            d.pop(),
            h
        };
        z.isEqual = function(a, b) {
            return G(a, b, [], [])
        },
        z.isEmpty = function(a) {
            if (null == a) return ! 0;
            if (z.isArray(a) || z.isString(a)) return 0 === a.length;
            for (var b in a) if (z.has(a, b)) return ! 1;
            return ! 0
        },
        z.isElement = function(a) {
            return ! (!a || 1 !== a.nodeType)
        },
        z.isArray = w ||
        function(a) {
            return "[object Array]" == l.call(a)
        },
        z.isObject = function(a) {
            return a === Object(a)
        },
        A(["Arguments", "Function", "String", "Number", "Date", "RegExp"],
        function(a) {
            z["is" + a] = function(b) {
                return l.call(b) == "[object " + a + "]"
            }
        }),
        z.isArguments(arguments) || (z.isArguments = function(a) {
            return ! (!a || !z.has(a, "callee"))
        }),
        "function" != typeof / . / &&(z.isFunction = function(a) {
            return "function" == typeof a
        }),
        z.isFinite = function(a) {
            return isFinite(a) && !isNaN(parseFloat(a))
        },
        z.isNaN = function(a) {
            return z.isNumber(a) && a != +a
        },
        z.isBoolean = function(a) {
            return a === !0 || a === !1 || "[object Boolean]" == l.call(a)
        },
        z.isNull = function(a) {
            return null === a
        },
        z.isUndefined = function(a) {
            return void 0 === a
        },
        z.has = function(a, b) {
            return m.call(a, b)
        },
        z.noConflict = function() {
            return a._ = d,
            this
        },
        z.identity = function(a) {
            return a
        },
        z.times = function(a, b, c) {
            for (var d = Array(a), e = 0; a > e; e++) d[e] = b.call(c, e);
            return d
        },
        z.random = function(a, b) {
            return null == b && (b = a, a = 0),
            a + Math.floor(Math.random() * (b - a + 1))
        };
        var H = {
            escape: {
                "&": "&amp;",
                "<": "&lt;",
                ">": "&gt;",
                '"': "&quot;",
                "'": "&#x27;",
                "/": "&#x2F;"
            }
        };
        H.unescape = z.invert(H.escape);
        var I = {
            escape: new RegExp("[" + z.keys(H.escape).join("") + "]", "g"),
            unescape: new RegExp("(" + z.keys(H.unescape).join("|") + ")", "g")
        };
        z.each(["escape", "unescape"],
        function(a) {
            z[a] = function(b) {
                return null == b ? "": ("" + b).replace(I[a],
                function(b) {
                    return H[a][b]
                })
            }
        }),
        z.result = function(a, b) {
            if (null == a) return null;
            var c = a[b];
            return z.isFunction(c) ? c.call(a) : c
        },
        z.mixin = function(a) {
            A(z.functions(a),
            function(b) {
                var c = z[b] = a[b];
                z.prototype[b] = function() {
                    var a = [this._wrapped];
                    return i.apply(a, arguments),
                    N.call(this, c.apply(z, a))
                }
            })
        };
        var J = 0;
        z.uniqueId = function(a) {
            var b = ++J + "";
            return a ? a + b: b
        },
        z.templateSettings = {
            evaluate: /<%([\s\S]+?)%>/g,
            interpolate: /<%=([\s\S]+?)%>/g,
            escape: /<%-([\s\S]+?)%>/g
        };
        var K = /(.)^/,
        L = {
            "'": "'",
            "\\": "\\",
            "\r": "r",
            "\n": "n",
            " ": "t",
            "\u2028": "u2028",
            "\u2029": "u2029"
        },
        M = /\\|'|\r|\n|\t|\u2028|\u2029/g;
        z.template = function(a, b, c) {
            var d;
            c = z.defaults({},
            c, z.templateSettings);
            var e = new RegExp([(c.escape || K).source, (c.interpolate || K).source, (c.evaluate || K).source].join("|") + "|$", "g"),
            f = 0,
            g = "__p+='";
            a.replace(e,
            function(b, c, d, e, h) {
                return g += a.slice(f, h).replace(M,
                function(a) {
                    return "\\" + L[a]
                }),
                c && (g += "'+\n((__t=(" + c + "))==null?'':_.escape(__t))+\n'"),
                d && (g += "'+\n((__t=(" + d + "))==null?'':__t)+\n'"),
                e && (g += "';\n" + e + "\n__p+='"),
                f = h + b.length,
                b
            }),
            g += "';\n",
            c.variable || (g = "with(obj||{}){\n" + g + "}\n"),
            g = "var __t,__p='',__j=Array.prototype.join,print=function(){__p+=__j.call(arguments,'');};\n" + g + "return __p;\n";
            try {
                d = new Function(c.variable || "obj", "_", g)
            } catch(h) {
                throw h.source = g,
                h
            }
            if (b) return d(b, z);
            var i = function(a) {
                return d.call(this, a, z)
            };
            return i.source = "function(" + (c.variable || "obj") + "){\n" + g + "}",
            i
        },
        z.chain = function(a) {
            return z(a).chain()
        };
        var N = function(a) {
            return this._chain ? z(a).chain() : a
        };
        z.mixin(z),
        A(["pop", "push", "reverse", "shift", "sort", "splice", "unshift"],
        function(a) {
            var b = f[a];
            z.prototype[a] = function() {
                var c = this._wrapped;
                return b.apply(c, arguments),
                "shift" != a && "splice" != a || 0 !== c.length || delete c[0],
                N.call(this, c)
            }
        }),
        A(["concat", "join", "slice"],
        function(a) {
            var b = f[a];
            z.prototype[a] = function() {
                return N.call(this, b.apply(this._wrapped, arguments))
            }
        }),
        z.extend(z.prototype, {
            chain: function() {
                return this._chain = !0,
                this
            },
            value: function() {
                return this._wrapped
            }
        })
    }).call(this)
}),
__tk__define("load", [],
function(a, b) {
    var c, d = window.location,
    e = d.href,
    f = d.host,
    g = !0,
    h = e.match(/tts_shield=true/);
    c = ["list.taobao.com", "buy.taobao.com", "buy.tmall.com", "cart.jd.com", "www.jd.com", "www.tmall.com", "www.taobao.com", "www.vip.com", "category.vip.com", "www.gome.com.cn", "list.gome.com.cn", "search.gome.com.cn", "item.gome.com.cn", "www.gomehigo.hk", "enterprise.gome.com.cn", "www.amazon.cn", "order.meilishuo.com", "cart.vip.com", "s.taobao.com", "s8.taobao.com", "search.taobao.com", "search1.taobao.com", "list.tmall.com", "shoucang.taobao.com", "item.taobao.com", "sec.taobao.com", "item.beta.taobao.com", "baoxian.taobao.com", "detail.tmall.com", "trade.taobao.com", "cart.taobao.com", "unit.cart.taobao.com", "cart.tmall.com", "unit.cart.tmall.com", "www.mogujie.com", "shop.mogujie.com", "search.mogujie.com", "www.meilishuo.com", "list.jd.com", "re.jd.com", "search.jd.com", "item.jd.com", "www.yhd.com", "list.yhd.com", "weibo.com", "search.1mall.com", "search.yhd.com", "item.1mall.com", "item.yhd.com", "www.1mall.com", "item.vancl.com", "s.vancl.com", "list.vjia.com", "s.vjia.com", "item.vjia.com", "category.dangdang.com", "product.dangdang.com", "search.dangdang.com", "search.suning.com", "list.suning.com", "product.suning.com", "www.suning.com", "search.jumei.com", "searchex.yixun.com", "www.yixun.com", "item.yixun.com", "www.jiuxian.com", "item.jumei.com", "www.dangdang.com", "detail.ju.taobao.com", "www.zhe800.com", "brand.zhe800.com", "search.zhe800.com", "auction1.paipai.com", "s.paipai.com", "www.paipai.com", "www.lefeng.com", "search.lefeng.com", "product.lefeng.com", "brand.lefeng.com", "mall.lefeng.com", "shopping.lefeng.com", "www.kaola.com", "www.beibei.com", "global.beibei.com", "d.beibei.com", "you.beibei.com", "trade.beibei.com", "www.fengqu.com", "www.mia.com", "cn.strawberrynet.com", "www.ymatou.com", "c.ymatou.com", "duobao.paipai.com", "sports.mogujie.com", "act.vip.com"];
    for (var i = 0; i < c.length; i++) {
        if (f === c[i] || f.match(/shop/) || e.match(/view_shop.htm/) || f.match(/detail.tmall/)) {
            g = !0;
            break
        }
        g = !1
    } (/^http:\/\/.*\.jumei/.test(window.location.href) || /^http:\/\/.*\.meituan\.com\/$/.test(window.location.href) || /^http:\/\/.*\.nuomi\.com\/$/.test(window.location.href)) && (g = !0),
    (/.dangdang./.test(f) || /.gome.com.cn/.test(f) || /.suning.com/.test(f) || /.vip./.test(f)) && (g = !0),
    /.tmall.com$/.test(f) && (g = !0),
    /(guang|ju|mei|chi|style|sport|nvren|nanren|zln|g|i|lu|cart|shoucang).taobao.com|www.taobao.com\/[a-z]|www.jiyoujia.com/.test(f) && (g = !0),
    /.jd.(com|hk)/.test(f) && (g = !0),
    !g || h ? b.result = !1 : b.result = !0
}),
__tk__define("log", ["./lib/jquery", "./utils", "./host", "./product"],
function(a, b, c) {
    function d() {
        if (h.isTBList || h.isTMList) n = h.isTBList ? document.getElementById("q").value: document.getElementById("mq").value,
        g.statLog_img({
            systemName: "tts_taobao_list",
            ref: encodeURIComponent(k),
            guid: m,
            ptyp: h.pageType,
            query: encodeURIComponent(n)
        });
        else if (h.isTMDetail || h.isTBDetail) e = new j(document.getElementById("J_ImgBooth")),
        g.statLog_img({
            systemName: "tts_taobao_detail",
            ref: encodeURIComponent(k),
            guid: m,
            host: location.host,
            ptyp: h.pageType,
            id: e.getID(),
            shopid: f("#LineZing").attr("shopid"),
            cid: e.getCid(),
            ztc: location.href.match(/ali_refid=(a3_420432_1006|a3_420984_1006|a3_420980_1006|a3_420841_1006)/) ? !0 : !1,
            prc: e.getPrice()
        }),
        h.isTMDetail && (f("#J_LinkBuy ").on("click",
        function() {
            "undefined" == typeof tk_goumai && (g.statLog_img({
                systemName: "tts_taobao_detail_clk",
                type: "gm",
                num: 1,
                shopId: f("#LineZing").attr("shopid"),
                cid: e.getCid(),
                pid: e.getID(),
                nick: l,
                refer: document.referrer,
                sum: e.getPrice()
            }), window.tk_goumai = !0)
        }), f("#J_LinkBasket").on("click",
        function() {
            "undefined" == typeof tk_shoucang && (g.statLog_img({
                systemName: "tts_taobao_detail_clk",
                type: "gwc",
                num: 1,
                shopId: f("#LineZing").attr("shopid"),
                cid: e.getCid(),
                pid: e.getID(),
                nick: l,
                refer: document.referrer,
                sum: e.getPrice()
            }), window.tk_shoucang = !0)
        }), f("#J_AddFavorite").on("click",
        function() {
            "undefined" == typeof tk_sc && (g.statLog_img({
                systemName: "tts_taobao_detail_clk",
                type: "sc",
                num: 1,
                shopId: f("#LineZing").attr("shopid"),
                cid: e.getCid(),
                pid: e.getID(),
                nick: l,
                refer: document.referrer,
                sum: e.getPrice()
            }), window.tk_sc = !0)
        })),
        h.isTBDetail && (f(".J_LinkBuy").on("click",
        function() {
            "undefined" == typeof tk_goumai && (g.statLog_img({
                systemName: "tts_taobao_detail_clk",
                type: "gm",
                shopId: f("#LineZing").attr("shopid"),
                cid: e.getCid(),
                pid: e.getID(),
                nick: l,
                refer: document.referrer,
                num: 1,
                sum: e.getPrice()
            }), window.tk_goumai = !0)
        }), f(".J_LinkAdd").on("click",
        function() {
            "undefined" == typeof tk_shoucang && (g.statLog_img({
                systemName: "tts_taobao_detail_clk",
                type: "gwc",
                shopId: f("#LineZing").attr("shopid"),
                cid: e.getCid(),
                pid: e.getID(),
                nick: l,
                num: 1,
                sum: e.getPrice()
            }), window.tk_shoucang = !0)
        }), f(".J_TDialogTrigger").on("click",
        function() {
            "undefined" == typeof tk_sc && (g.statLog_img({
                systemName: "tts_taobao_detail_clk",
                cat: "tts_tuan",
                type: "sc",
                shopId: f("#LineZing").attr("shopid"),
                cid: e.getCid(),
                pid: e.getID(),
                nick: l,
                refer: document.referrer,
                num: 1,
                sum: e.getPrice()
            }), window.tk_sc = !0)
        }));
        else if (h.isBuy) {
            var a, b = null;
            b = setInterval(function() {
                document.getElementById("J_Go") && (a = function() {
                    var a = ",",
                    b = f(".orderInfo-shop").attr("href").match(/shop_id=([0-9].+)/)[1];
                    return f(".order .item").each(function(c, d) {
                        b += "_",
                        b += g.sliceID(f(d).find(".itemInfo-link").attr("href")),
                        b += "_",
                        b += f(d).find(".J_ItemPrice").text(),
                        a += b
                    }),
                    a.substring(1)
                },
                h.isTBbuy ? (g.statLog_img({
                    systemName: "tts_gouwu_dingdan",
                    ptyp: "dd_show",
                    mobile: f(".user-address").eq(0).find("em").text(),
                    ads: encodeURIComponent(f(".J_BuyFooterAddressDetail").text().replace(/\n/g, "").trim().replace(/\s/g, "")),
                    name: encodeURIComponent(f(".J_BuyFooterAddressRec").text().trim().replace(/[0-9]/g, "")),
                    nick: l,
                    ref: encodeURIComponent(k),
                    info: encodeURIComponent(a()),
                    num: f(".buy-order-field .item").length,
                    sum: f("#J_ActualFee").text().replace(/\./, "")
                }), f("#J_Go").on("click",
                function() {
                    g.statLog_img({
                        systemName: "tts_gouwu_dingdan",
                        ptyp: "dd_clk",
                        mobile: f(".user-address").eq(0).find("em").text(),
                        ads: encodeURIComponent(f(".J_BuyFooterAddressDetail").text().replace(/\n/g, "").trim().replace(/\s/g, "")),
                        name: encodeURIComponent(f(".J_BuyFooterAddressRec").text().trim().replace(/[0-9]/g, "")),
                        info: encodeURIComponent(a()),
                        nick: l,
                        ref: encodeURIComponent(k),
                        num: f(".buy-order-field .item").length,
                        sum: f("#J_ActualFee").text().replace(/\./, "")
                    })
                })) : h.isTMbuy && (a = function() {
                    var a = ",",
                    b = f(".bundle-title a").attr("href").match(/shop_id=([0-9].+)/)[1];
                    return f(".grid-order ").each(function(c, d) {
                        b += "_",
                        b += g.sliceID(f(d).find(".img").attr("href")),
                        b += "_",
                        b += f(d).find(".tube-sum .sum").text(),
                        a += b
                    }),
                    a.substring(1)
                },
                g.statLog_img({
                    systemName: "tts_gouwu_dingdan",
                    ptyp: "dd_show",
                    mobile: f(".addr-bd").eq(0).find(".phone").text(),
                    ads: encodeURIComponent(f(".addr-bd .street").eq(0).text().trim()),
                    name: encodeURIComponent(f(".addr-hd .name").eq(0).text().trim()),
                    info: encodeURIComponent(a()),
                    nick: l,
                    ref: encodeURIComponent(k),
                    num: f(".grid-order").length,
                    sum: f("#J_RealPay").text().replace(/\./, "")
                }), f("#J_Go").on("click",
                function() {
                    g.statLog_img({
                        systemName: "tts_gouwu_dingdan",
                        ptyp: "dd_clk",
                        mobile: f(".addr-bd").eq(0).find(".phone").text(),
                        ads: encodeURIComponent(f(".addr-bd .street").eq(0).text().trim()),
                        name: encodeURIComponent(f(".addr-hd .name").eq(0).text().trim()),
                        nick: l,
                        ref: encodeURIComponent(k),
                        info: encodeURIComponent(a()),
                        num: f(".grid-order").length,
                        sum: f("#J_RealPay").text().replace(/\./, "")
                    })
                })), clearInterval(b), b = null)
            },
            200)
        } else if (h.isJuDetail) g.statLog_img({
            systemName: "tts_jhs_detail",
            ref: encodeURIComponent(k),
            guid: m,
            tpye: "show",
            id: g.sliceID(f(".normal-pic a").attr("href")),
            shopid: "",
            sum: f(".J_ItemShare").data("itemprice"),
            nick: l
        }),
        f(".J_BuySubmit").on("click",
        function() {
            g.statLog_img({
                systemName: "tts_jhs_detail",
                ref: encodeURIComponent(k),
                guid: m,
                tpye: "clk",
                id: g.sliceID(f(".normal-pic a").attr("href")),
                shopid: "",
                sum: f(".J_ItemShare").data("itemprice"),
                nick: l
            })
        });
        else if (h.isVipShow) g.statLog_img({
            systemName: "tts_vip_list",
            ref: encodeURIComponent(k),
            guid: m,
            title: document.title
        });
        else if (h.isVipDetail) g.statLog_img({
            systemName: "tts_vip_detail",
            ref: encodeURIComponent(k),
            guid: m,
            url: location.href,
            item_prc: f(".pbox_price em").text(),
            title: document.title
        }),
        f("#J_cartAdd_submit").on("click",
        function() {
            g.statLog_img({
                systemName: "tts_vip_detail_clk",
                ref: encodeURIComponent(k),
                guid: m,
                url: location.href,
                sum: f(".pbox_price em").text(),
                title: document.title,
                nick: f(".user_in_name").text(),
                num: f(".num_input").text()
            })
        });
        else if (h.isVIPCart) g.statLog_img({
            systemName: "tts_vip_gwc",
            ptyp: "gwc_show",
            nick: f(".welcome-text a").eq(0).text(),
            ref: encodeURIComponent(k),
            info: "",
            sum: f(".J_info_total").text()
        }),
        f(".ui-btn-loading-before").on("click",
        function() {
            "undefined" == typeof tk_vipgwc && (g.statLog_img({
                systemName: "tts_vip_gwc",
                ptyp: "gwc_show",
                nick: f(".welcome-text a").eq(0).text(),
                ref: encodeURIComponent(k),
                info: "",
                sum: f(".J_info_total").text()
            }), window.tk_vipgwc = !0)
        });
        else if (h.isVipCheckout) g.statLog_img({
            systemName: "tts_vip_dingdan",
            ptyp: "dd_show",
            mobile: f(".member-mobile").text(),
            ads: encodeURIComponent(f(".member-text").eq(2).text().trim()),
            name: encodeURIComponent(f(".member-name").eq(0).text().trim()),
            info: "",
            nick: f(".welcome-text a").eq(0).text(),
            ref: encodeURIComponent(k),
            sum: f(".J_pay_amount").text()
        }),
        f(".checkout_submit_btn").on("click",
        function() {
            "undefined" == typeof tk_vipbuy && (g.statLog_img({
                systemName: "tts_vip_dingdan",
                ptyp: "dd_show",
                mobile: f(".member-mobile").text(),
                ads: encodeURIComponent(f(".member-text").eq(2).text().trim()),
                name: encodeURIComponent(f(".member-name").eq(0).text().trim()),
                info: "",
                nick: f(".welcome-text a").eq(0).text(),
                ref: encodeURIComponent(k),
                sum: f(".J_pay_amount").text()
            }), window.tk_vipbuy = !0)
        });
        else if (h.isB2CDetail) {
            var c;
            c = f(".land_a_pic")[0] ? f(".land_a_pic .err-product")[0] : f("#spec-n1 img")[0],
            e = new j(c),
            g.statLog_img({
                systemName: "tts_jd_detail",
                ref: encodeURIComponent(k),
                guid: m,
                ptyp: h.pageType,
                id: e.getID(),
                shop_name: "",
                prc: e.getPrice()
            }),
            f(".J_BuySubmit").on("click",
            function() {
                "undefined" == typeof tk_jdbuy && (g.statLog_img({
                    systemName: "tts_jd_detail_clk",
                    ref: encodeURIComponent(k),
                    guid: m,
                    ptyp: h.pageType,
                    id: e.getID(),
                    num: f("#buy-num").val(),
                    sum: e.getPrice(),
                    shop_name: "",
                    prc: e.getPrice(),
                    nick: f(".link-user").text()
                }), window.tk_jdbuy = !0)
            })
        } else h.isJDCart ? (g.statLog_img({
            systemName: "tts_jd_gwc",
            ref: encodeURIComponent(k),
            guid: m,
            type: "gwc_show",
            nick: f(".link-user").text(),
            info: "",
            sum: f(".sumPrice em").eq(0).text()
        }), f(".J_BuySubmit").on("click",
        function() {
            "undefined" == typeof tk_jdbuy && (g.statLog_img({
                systemName: "tts_jd_detail_clk",
                ref: encodeURIComponent(k),
                guid: m,
                ptyp: h.pageType,
                id: e.getID(),
                num: f("#buy-num").val(),
                sum: e.getPrice(),
                shop_name: "",
                prc: e.getPrice(),
                nick: f(".link-user").text()
            }), window.tk_jdbuy = !0)
        })) : h.isJDtrade && (g.statLog_img({
            systemName: "tts_jd_dingdan",
            ref: encodeURIComponent(k),
            guid: m,
            type: "gwc_show",
            nick: f(".link-user").text(),
            info: "",
            mobile: "",
            sum: ""
        }), f(".checkout-submit").on("click",
        function() {
            "undefined" == typeof tk_jdbuy && (g.statLog_img({
                systemName: "tts_jd_dingdan",
                ref: encodeURIComponent(k),
                guid: m,
                type: "gwc_show",
                nick: f(".link-user").text(),
                info: "",
                mobile: "",
                sum: f(".payPriceId").text()
            }), window.tk_jdbuy = !0)
        }))
    }
    var e, f = a("./lib/jquery"),
    g = a("./utils"),
    h = a("./host"),
    i = (f("body"), document.cookie),
    j = a("./product"),
    k = document.referrer,
    l = i.replace(/.*tracknick=/, "").replace(/;.*/, ""),
    m = g.GUID,
    n = "";
    c.exports = {
        init: function() {
            try {
                d()
            } catch(a) {}
        }
    }
}),
__tk__define("models/api", ["../lib/jquery", "../product", "../utils", "../host", "../utils/env"],
function(a, b, c) {
    function d(a) {
        function b(a) {
            var b = "";
            return o(a + " li").each(function(a, c) {
                o(c).text().match(/尺码|尺寸/) || (b += o(c).attr("title"))
            }),
            o.trim(b)
        }
        var c = "//www.gmf.com/assembleItems.php?",
        d = 2083,
        e = "",
        f = "",
        g = document.cookie,
        h = o("#J_AttrUL"),
        i = o(".attributes-list"),
        j = "",
        k = s.pageType;
        return c += "itemId=" + p.item.getID() + "&title=" + encodeURIComponent(p.item.getTitle()) + "&price=" + p.item.getPrice() + "&nick=" + encodeURIComponent(p.item.getNick()) + "&pic=" + encodeURIComponent(p.item.getImg()) + "&salenum=" + p.item.getSum() + "&website=" + s.webSite + "&ZZCJ=1&ptyp=" + k + "&z1_guid=" + q.GUID,
        g.match(/tracknick/) && (e = g.replace(/.*tracknick=/, "").replace(/;.*/, ""), c += "&visitNick=" + e),
        p.item.getID() || (c += "&href=" + encodeURIComponent(p.item.getHref())),
        s.isDetail ? (c += "&cid=" + p.item.getCid() + "&locus=" + encodeURIComponent(p.item.getLocation()) + "&sex=" + encodeURIComponent(p.item.getSex()) + "&creditGrade=" + p.item.getLevel(), p.item.getItemStyle() && (c += "&style=" + encodeURIComponent(p.item.getItemStyle())), s.isTMDetail && h[0] && h.text() ? f = "&props=" + encodeURIComponent(b("#J_AttrUL")) : s.isTBDetail && i[0] && i.text() && (f = "&props=" + encodeURIComponent(b(".attributes-list")))) : (s.isTMList || s.isTBList) && (o("#title")[0] ? j = o("#title").val() : o("#mq")[0] && (j = o("#mq").val()), c += "&listQuery=" + encodeURIComponent(j)),
        c += "&jsonp=?&ref=" + window.location.host,
        q.DITCH_ID && (c += "&ditch=" + q.DITCH_ID),
        c.length + f.length < d && (c += f),
        a.type && ("bijia" === a.type ? c += "&type=same": "recommend" === a.type && (c += "&type=similar")),
        a.positionInfo && (c += "&pid=" + a.positionInfo),
        c
    }
    function e() {
        var a = "",
        b = "//recom.taotaosou.com/search/tsearch.do?callback=?&website=" + s.webSite + "&keyword=";
        if (s.isTMList) a = "" === o("#mq").val() ? document.title.replace("-天猫Tmall.com-尚天猫，就购了", "").replace("-", "") : o("#mq").val();
        else if (s.isTBList) a = o(".search-combobox-input")[0] ? o(".search-combobox-input").val() : document.title.replace(/_.+/, "");
        else if (s.isB2CList) a = document.title.match(/商品搜索/) ? o("#key").val() : document.title.replace(/\s.+/, "");
        else if (s.isMGJList) document.getElementById("category_all") ? a = o("#category_all .sub_title").text() : document.getElementById("top_nav_form") && (a = o("#top_nav_form input[name=q]").val());
        else if (s.isVipList) a = document.title.replace("【品牌 正品 低价】_唯品会", "");
        else {
            if (!s.isMLSList) return b = "//recom.taotaosou.com/sales/pluKeywordRecom.do?callback=?&guid=" + q.GUID + "&website=taobao";
            o(".rec_nav")[0] ? a = o(".rec_nav h1").text() : document.title.match(/宝贝搜索/) && (a = document.title.replace(/-.+/, ""))
        }
        return b += encodeURIComponent(a)
    }
    function f() {
        var a = "//recom.taotaosou.com/getShowRecom.do?itemId=" + p.item.getID() + "&website=" + s.webSite + "&title=" + encodeURIComponent(p.item.getTitle()) + "&guid=" + q.GUID + "&ditch=" + q.DITCH_ID + "&callback=?";
        return (s.isTBDetail || s.isTMDetail) && (a += "&cid=" + p.item.getCid()),
        a
    }
    function g(a, b) {
        var c = "//www.gmf.com/findAndFindLeft.php?title=" + encodeURIComponent(p.item.getTitle()) + "&website=" + s.webSite + "&cateType=" + a + "&cateId=" + b + "&guid=" + q.GUID + "&ditch=" + q.DITCH_ID + "&itemSize=9&pid=278_" + q.DITCH_ID + "&level=1&callback=?";
        return s.isMGJDetail || (c += "&cid=" + p.item.getCid()),
        c
    }
    function h(a, b, c) {
		var c = o('#mainsrp-itemlist').find('.items:first');
			var h = "//www.gmf.com/findAndFind.php?type=2&title=" + encodeURIComponent(a);
			o.ajax({
                url: h,
                dataType: "jsonp",
                jsonp: "callback",
				jsonpCallback:"addHtml"
            }).done(function(a) {
            })
			addHtml = function(data){
				var _datas = []; 
				o.each(data,function(i,e){
					var _temp = '<div class="item  " data-category="auctions" data-index="0"> <div class="pic-box J_MouseEneterLeave J_PicBox"> <div class="pic-box-inner"> <div class="pic"> <a id="J_Itemlist_PLink_528391527516" class="pic-link J_ClickStat J_ItemPicA" data-nid="528391527516" data-recommend-nav="" href="'+e.href+'" target="_blank" trace="msrp_auction" traceidx="0" trace-index="0" trace-nid="528391527516" trace-num="48" trace-price="99.00" trace-pid="">  <img id="J_Itemlist_Pic_528391527516" class="J_ItemPic img" src="'+e.media+'" data-src="'+e.media+'" alt="'+e.title+'">  </a> </div>    <div class="similars p4p-similars">  <span class="p4p-tag">款式:包头</span>  <span class="p4p-tag">鞋跟款式:平底</span>  <span class="p4p-tag">颜色分类:黑色</span>  <span class="p4p-tag">流行元素:粗跟</span>  <span class="p4p-tag">流行元素:防水台</span>  <div class="p4p-bg"></div> </div>      <div class="report"> <a href="//jubao.taobao.com/index.htm?itemId=528391527516" target="_blank" title="举报该宝贝"> <span class="icon-btn-report"></span> </a> </div>  </div>   </div>   <div class="ctx-box J_MouseEneterLeave J_IconMoreNew">  <div class="row row-1 g-clearfix">   <div class="price g_price g_price-highlight"> <span>￥</span><strong>'+e.price+'</strong> </div> <div class="deal-cnt">'+e.sales+'人付款</div>  <div class="ship icon-service-free"></div>   </div>  <div class="row row-2 title"> <a id="J_Itemlist_TLink_528391527516" class="J_ClickStat" data-nid="528391527516" href="https://click.simba.taobao.com/cc_im?p=%C5%AE%D0%AC&amp;s=798777643&amp;k=377&amp;e=usHLw5l2%2B9Rv7VZBjWCI7avR82AZiKPHjibcluX0yGnUSQuh1pemJxoo%2F4pWmSKmYY52b71BJlF32oqXNNuCaP3wkSFN3kHjTd281MNynrUB7GsXVzoWmRH4Mm7Tu5cJhfB32iJDILapclmRnF8A7dMH51013Ae3LsfPfpieCRvI3onMYy0sXCbpmAY4rDKJQCWs3iSTgnTIYRsRF9mjhsWnEbHlJOy5wv%2FTQW6OysqwSGcqooQ08wV6GFqKK3Ogl3%2F5lwannEAOHU3YnOPr%2BDQrfiKg9Z2eVJsLSN5KVy%2BhPGoEpRJtJ8Ivnp7o3QtRz8u1Km38FroaYN%2FxM6r3NsjLtV5%2F79iDcPMkPCI%2BDJEt7IuzhixT0w%3D%3D#detail" target="_blank" trace="msrp_auction" traceidx="0" trace-index="0" trace-nid="528391527516" trace-num="48" trace-price="99.00" trace-pid="">  <span class="baoyou-intitle icon-service-free"></span>  '+e.title+' </a> </div>  <div class="row row-3 g-clearfix"> <div class="shop">      <a class="shopname J_MouseEneterLeave J_ShopInfo" data-userid="2653488751" data-nid="528391527516" target="_blank" href="'+e.shopUrl+'">   <span class="dsrs">  <span class="dsr morethan"></span>  <span class="dsr morethan"></span>  <span class="dsr morethan"></span>  </span>  <span>'+e.shopName+'</span> </a>  </div> <div class="location">'+e.city+'</div> </div>    <div class="row row-4 g-clearfix">  <div class="feature-icons icon-has-more" id="J_Itemlist_Icons_528391527516">  <ul class="icons">  <li class="icon " data-index="0">  <a href="'+e.shopUrl+'" target="_blank" title="掌柜热卖宝贝" trace="srpservice" traceidx="0"><span class="icon-service-remai"></span></a>  </li>  <li class="icon J_IconPopup J_MouseEneterLeave" data-index="1">  <span class="icon-service-china-made"></span>  </li>  <li class="icon J_IconPopup J_MouseEneterLeave" data-index="2"> <span class="icon-service-jinpaimaijia"></span>  </li>  <li class="icon J_IconPopup J_MouseEneterLeave" data-index="3"> <span class="icon-service-baoxian"></span> </li>  </ul> </div> <div class="wangwang"> <span class="ww-light ww-small" data-nick="gmf" data-display="inline" data-item="39452879257" data-icon="small" data-encode="true"><a href="https://amos.alicdn.com/getcid.aw?v=3&amp;site=cntaobao&amp;groupid=0&amp;s=1&amp;fromid=cntaobaoAmxssjGVx8KFEQ2aKOH/JY8OvECeCBDP&amp;uid=老黑时尚" target="_blank" class="ww-inline ww-online" style="background-image:url(https://www.gmf.com/browser-static/tmt/media-logo.png);background-position: inherit;" title="点此可以直接和卖家交流选好的宝贝，或相互交流网购体验，还支持语音视频噢。"><span>旺旺在线</span></a></span> </div> </div> </div> </div>';
					_datas.push(_temp);
				});
				c.prepend(_datas.join(""));
			}
			
			var l = o('#J_shopkeeper').find('ul:first');
			var ss = o('#J_shopkeeper').find("tbcc").attr("id").substr(7);
			console.log(ss);
			var t = "//www.gmf.com/findAndFind.php?type=3&title=" + encodeURIComponent(a);
			o.ajax({
                url: t,
                dataType: "jsonp",
                jsonp: "callback",
				jsonpCallback:"addHtmlr"
            }).done(function(a) {
            })
			addHtmlr = function(data){
				var _datasr = []; 
				o.each(data,function(i,e){
					var _temp = '<li class="c2016-1-130742-1461918942469-item oneline"> <div class="c2016-1-130742-1461918942469-imgwrap"> <a class="c2016-1-130742-1461918942469-imglink" target="_blank" href="'+e.href+'" title="'+e.title+'" data-spm-anchor-id="a230r.1.0.0" data-spm-act-id="a230r.1.0.0.Z7cDSi"> <img src="'+e.media+'"> </a> </div> <div class="c2016-1-130742-1461918942469-line1"> <a target="_blank" href="'+e.href+'" class="c2016-1-130742-1461918942469-price"> <em>¥</em>'+e.price+'</a> <div> <a target="_blank" href="'+e.href+'" class="c2016-1-130742-1461918942469-sell"> 销量: <em>'+e.sales+'</em> </a> </div> </div> <a class="c2016-1-130742-1461918942469-red" target="_blank" href="'+e.href+'"><div class="c2016-1-130742-1461918942469-bgred"></div> <div class="c2016-1-130742-1461918942469-redtitle">'+e.title+'</div><div class="c2016-1-130742-1461918942469-hover"><span class="c2016-1-130742-1461918942469-property">袖长: 短袖</span><span class="c2016-1-130742-1461918942469-property">通勤: 韩版</span><span class="c2016-1-130742-1461918942469-property">服装版型: 宽松</span><span class="c2016-1-130742-1461918942469-property">衣长: 中长款</span><span class="c2016-1-130742-1461918942469-property">领型: 圆领</span></div><div class="c2016-1-130742-1461918942469-go"> </div> </a> <div class="c2016-1-130742-1461918942469-shuang11bar"><div class="c2016-1-130742-1461918942469-shuang11bar-icons"></div></div></li>';
					_temp=_temp.replace(/c2016-1-130742-1461918942469/g,ss);
					_datasr.push(_temp);
				});
				l.prepend(_datasr.join(""));
			}
		
        var d = "//www.gmf.com/findAndFind.php?title=" + encodeURIComponent(a) + "&website=" + s.webSite + "&cateType=" + b + "&cateId=" + c + "&cid=" + c + "&guid=" + q.GUID + "&ditch=" + q.DITCH_ID + "&itemSize=9&pid=278_" + q.DITCH_ID + "&level=1&callback=?";
        return d
    }
    function i(a, b, c) {
        var d = "lixL2c";
        return s.isTMList || s.isTBList || s.isB2CList ? (d = "lixL2c", r.juxiao() + "/s?showid=" + d + "&type=1&of=4&impct=9&qhtid=114078&qhcn=" + c + "&jsonp=?&ref=" + encodeURIComponent(b) + "&qhtag=" + encodeURIComponent(a)) : (d = "RMvMSy", r.juxiao() + "/s?showid=" + d + "&type=1&of=4&impct=9&qhtid=114078&qhcn=" + q.getCid() + "&jsonp=?&ref=" + encodeURIComponent(b) + "&qhtag=" + encodeURIComponent(a))
    }
    function j(a, b, c) {
        var d = "RMvMSy";
        return r.juxiao() + "/s.php?showid=" + d + "&type=1&of=4&impct=9&qhtid=114078&qhcn=" + q.getCid() + "&jsonp=?&ref=" + encodeURIComponent(b) + "&qhtag=" + encodeURIComponent(a)
    }
    function k(a, b, c) {
        var d = "lOygaI";
        return r.juxiao() + "/s.php?showid=" + d + "&type=1&of=4&impct=9&qhtid=114078&qhcn=" + c + "&jsonp=?&ref=" + encodeURIComponent(b) + "&qhtag=" + encodeURIComponent(a)
    }
    function l(a) {
        var b = "//www.gmf.com/findAndFind.php?title=" + encodeURIComponent(a) + "&website=" + s.webSite + "&level=1&cateType=&cateId=&guid=" + q.GUID + "&ditch=" + q.DITCH_ID + "&itemSize=9&pid=278_" + q.DITCH_ID + "&callback=?";
        return b
    }
    function m(a, b, c) {
        var d = "RMvMSy";
        return r.juxiao() + "/s.php?showid=" + d + "&type=1&of=4&impct=9&qhtid=114078&qhcn=" + c + "&jsonp=?&ref=" + encodeURIComponent(b) + "&qhtag=" + encodeURIComponent(a)
    }
    function n() {
        var a = "";
        return s.isTMList || s.isTBList ? a = "//col.taotaosou.com/get.do": (s.isTMDetail || s.isTBDetail) && (a = "//col.taotaosou.com/get.do?detail=true"),
        a
    }
    var o = a("../lib/jquery"),
    p = a("../product"),
    q = a("../utils"),
    r = a("../utils/env"),
    s = a("../host"),
    t = "//browserre.taotaosou.com/",
    u = "&sid=" + window.jiayuId;
    c.exports = {
        taobao: function(a) {
            return d(a)
        },
        reCom: function() {
            return e()
        },
        juXiao: function(a, b, c) {
            return i(a, b, c)
        },
        juxiaoType: function(a, b, c) {
            return k(a, b, c)
        },
        juxiaoPerson: function(a, b, c) {
            return j(a, b, c)
        },
        b2c: {
            category: function() {
                return t + "getCategoryAndSex.do?title=" + encodeURIComponent(p.item.getTitle()) + "&callback=?" + u + "&z1_guid=" + q.GUID
            },
            get: function() {
                return t + "getB2cItems.do?title=" + encodeURIComponent(p.item.getTitle()) + "&itemId=" + p.item.getID() + "&ptyp=" + s.pageType + "&ditch=" + q.DITCH_ID + "&website=" + s.webSite + "&callback=?" + u + "&z1_guid=" + q.GUID
            }
        },
        remind: {
            status: function(a) {
                return t + "hasPriceRemind.do?sourceId=" + p.item.getID() + "&userId=" + a + "&webSite=" + s.webSite + "&callback=?"
            },
            set: function(a) {
                return t + "setRemindPrice.do?sourceId=" + p.item.getID() + "&webSite=" + s.webSite + "&price=" + p.item.getPrice() + "&setPrice=" + p.item.getPrice() + "&userId=" + a + "&callback=?"
            },
            message: function(a) {
                return "//message.taotaosou.com/mbs/message/get?uid=" + q.userData().id + "&page=0&client＝7&type=" + a + "&pagesize=1&status=0&callback=?"
            },
            read: function(a) {
                return "//message.taotaosou.com/mbs/message/read?mids=" + a
            }
        },
        user: {
            status: function() {
                return "//uc.taotaosou.com/isLogin?callback=?"
            }
        },
        lds: function() {
            return f()
        },
        cps: function(a, b) {
            return g(a, b)
        },
        tbtmcps: function(a, b, c) {
            return h(a, b, c)
        },
        tuan: function() {
            return "//client.service.taotaosou.com/recomTab.do"
        },
        ads: function(a) {
            return l(a)
        },
        juXiaoList: function(a, b, c) {
            return m(a, b, c)
        },
        ditong: function() {
            return "//www.gmf.com/tumeiti-bottom.php?adType=0,0,1,0&keyword=0,0,0,0&adSize=0,0,430*70,0&itemSize=0,0,1,0&guid=" + q.GUID + "&ditch=" + q.DITCH_ID + "&tbId=&pid=388_" + q.DITCH_ID + "&jsonp=?"
        },
        getConfigure: function(a) {
            return "//exts-config.taotaosou.com/option/get?guid=" + q.GUID
        },
        setConfigure: function(a) {
            var b = "//exts-config.taotaosou.com/option/set?guid=" + q.GUID + "&code=" + a;
            return b
        },
        spider: function() {
            return n()
        },
        getConfig: function(a) {
            var b = "//showkc.taotaosou.com/jc.do?pid=" + a + "&guid=" + q.GUID + "&b=" + q.BROWSER + "&qdid=" + q.QDID;
            return b
        }
    }
    
    if(location.host=='www.baidu.com'){
    	function getQueryVariable(variable)
        {
          var query = window.location.search.substring(1);
          var vars = query.split("&");
          for (var i=0;i<vars.length;i++) {
            var pair = vars[i].split("=");
            if(pair[0] == variable){return pair[1];}
          }
          return(false);
        }
        var c = o('#content_left').find('div:first');
        var t = o("#4001").parent();
        /*t.append('<div class="oYuVAq mHvtcU kwCMJv B_mFWI mKbnZs" data-click="{&quot;fm&quot;:&quot;ppim&quot;, &quot;p1&quot;:4002, &quot;p5&quot;:4002, &quot;rsv_srcid&quot;:49508}" style="display: block !important; visibility: visible !important;    width: 540px;margin-bottom: 11px;overflow: hidden;"> <div class="roNgcG" style="display: block !important; visibility: visible !important"> <h3 class="t dMlGVA oWJj_C"> <a href="http://www.baidu.com/baidu.php?url=df_K00K28U5ZPFckCZEZxjkeYcu0V4gnUUZDt53IvE8XmWklkErjEgwTWhdFL4-jhpbuhr-4zdlIf02AVdaamAEmeZFgXQtkqKoeuacZsrAsXwvm2qe8xI2HIq0xgj-yvMPyLFf.DD_iHF8xnhA94wEYL_SNK-deQbfHgI3ynDgg6msw5I7AMHdd_NR2A5jkus4PXZFoY8Wuxj4HFtJjQovgcs4PTpyuCp8NvjjkdEWx7DhUjk8_s4rhOKjv3_5AeF9zInzIX5793LpI5QblXMWbzUVMQkLyI-XHFztTheW_tXMF9zI5pMwsrh8stU_rHIjvmThll1jbLgXrZF8E_s4rMZBstUVrM-zI5HkzuPv1-3eorzEFb4XrHIkvX5Hbs4rhOjkSguugvyyyyTUr1IYSrSEov_pYdeQOAl1_uzUYLUCX8PWHG4TMHYtThHI_4Xrl1_ozurgWbLTIMWY4rVeZuugvyyyyTUr1IYSrSVHReiM-kl-9h9moLtU7.U1Yz0ZDqkPjg_0KY5THfde00pyYqnW0Y0ATqmhNsT1D0Iybqmh7GuZR0TA-b5Hf0mv-b5Hb10AdY5HDsnHIxnH0kndt1njcs0AVG5H00TMfqnHb40ANGujYkPjcdg1D4njnvg1D3nW6sg1D4PHm3g1D4rj0dg1D4PHR4g1D4rj03g1D4rjfzg1D4rjmsg1DLnj0kg1DdPj03g1Dzn1nv0AFG5HcsP0KVm1Y4Pj0YnHcsn7tkn1m3n1DYPWc1g100TgKGujYs0Z7Wpyfqn0KzuLw9u1Ys0AqvUjYknW0VuZGxnHckQHb4rHb4g1DzPaY4rHb4rNtkn1bLQywlg1DvPWmVuZGxnH6LrDsVnH0snjNxnHbvriYkg1cvnjbVuZGxnWmvridbX-tzPWm4yadbX-tzP1TkQywlg1c3n1DVnNtzrjbLQHFxnWb1naYvg1nzPWfVn-t1PjfvQHFxn1RknBdbX-t1PHR1Qywlg1fYnBdbX6K9mWYsg100ugFM5H00TZ0qnHf3nW6zPWcLPsK8IM0qna3snj0snj0sn0KVIZ0qn0KbuAqs5H00ThCqn0KbugmqTAn0uMfqn0KspjYs0Aq15H00mMTqnH00UMfqn0K1XWY0IZN15H6krjmLrj0zPWnknWc4nj6srjn0ThNkIjYkPjm1n16zrj0zrHmd0ZPGujdWuyRsmycvrH0snj9bujwB0AP1UHdAf1n4njFjrjNjnYNAPjFa0A7W5HD0TA3qn0KkUgfqn0KkUgnqn0KlIjYs0AwYpyfqn0K9TLKWm1Ys0ZNspy4Wm1Ys0APzm1YvnHD1rf&amp;us=0.0.0.0.0.0.5&amp;us=0.0.0.0.0.0.21&amp;ck=4800.60.0.0.0.261.167.0&amp;shh=www.baidu.com&amp;sht=baiduhome_pg" class="wqWubR EjTZJi" style="   zoom: 1; padding-left: 20px;background-repeat: no-repeat;background-image: url(https://ss2.bdstatic.com/9rUZbzqaKgQFm2e88IuM_a/fcnp-ip/1013/pic/17b54588488d7c33f7e559e5712d3cd8.png)" target="_blank" data-is-main-url="true" data-landurl="http://redirect.simba.taobao.com/rd?c=un&amp;w=unionsem&amp;f=http%3a%2f%2fmosaic.re.taobao.com%2fsearch_ou%3fisinner%3d0%26buckid%3d2%26refpid%3dmm_26632258_3504122_32538762%26keyword%3d%25c4%25d0%25d7%25b0%26pid%3dmm_26632258_3504122_32538762%26b%3D4014000030456791&amp;k=fe18b7d04a29ed5c&amp;p=mm_26632258_3504122_32538762&amp;b=4014000030456791"><font color="#CC0000">男装</font>尖货新品低价购!淘宝网<font color="#CC0000">男装</font>今日必抢!</a><a hidefocus="hidefocus" target="_blank" class="eghdvD" href="http://www.baidu.com/baidu.php?url=df_K00K28U5ZPFckCZEZxjkeYcu0V4gnUUZDt53IvE8XmWklkErjEgwTWhdFL4-jhpbuhr-4zdlIf02AVdaamAEmeZFgXQtkqKoeuacZsrAsXwvm2qe8xI2HIq0xgj-yvMPyLFf.DD_iHF8xnhA94wEYL_SNK-deQbfHgI3ynDgg6msw5I7AMHdd_NR2A5jkus4PXZFoY8Wuxj4HFtJjQovgcs4PTpyuCp8NvjjkdEWx7DhUjk8_s4rhOKjv3_5AeF9zInzIX5793LpI5QblXMWbzUVMQkLyI-XHFztTheW_tXMF9zI5pMwsrh8stU_rHIjvmThll1jbLgXrZF8E_s4rMZBstUVrM-zI5HkzuPv1-3eorzEFb4XrHIkvX5Hbs4rhOjkSguugvyyyyTUr1IYSrSEov_pYdeQOAl1_uzUYLUCX8PWHG4TMHYtThHI_4Xrl1_ozurgWbLTIMWY4rVeZuugvyyyyTUr1IYSrSVHReiM-kl-9h9moLtU7.U1Yz0ZDqkPjg_0KY5THfde00pyYqnW0Y0ATqmhNsT1D0Iybqmh7GuZR0TA-b5Hf0mv-b5Hb10AdY5HDsnHIxnH0kndt1njcs0AVG5H00TMfqnHb40ANGujYkPjcdg1D4njnvg1D3nW6sg1D4PHm3g1D4rj0dg1D4PHR4g1D4rj03g1D4rjfzg1D4rjmsg1DLnj0kg1DdPj03g1Dzn1nv0AFG5HcsP0KVm1Y4Pj0YnHcsn7tkn1m3n1DYPWc1g100TgKGujYs0Z7Wpyfqn0KzuLw9u1Ys0AqvUjYknW0VuZGxnHckQHb4rHb4g1DzPaY4rHb4rNtkn1bLQywlg1DvPWmVuZGxnH6LrDsVnH0snjNxnHbvriYkg1cvnjbVuZGxnWmvridbX-tzPWm4yadbX-tzP1TkQywlg1c3n1DVnNtzrjbLQHFxnWb1naYvg1nzPWfVn-t1PjfvQHFxn1RknBdbX-t1PHR1Qywlg1fYnBdbX6K9mWYsg100ugFM5H00TZ0qnHf3nW6zPWcLPsK8IM0qna3snj0snj0sn0KVIZ0qn0KbuAqs5H00ThCqn0KbugmqTAn0uMfqn0KspjYs0Aq15H00mMTqnH00UMfqn0K1XWY0IZN15H6krjmLrj0zPWnknWc4nj6srjn0ThNkIjYkPjm1n16zrj0zrHmd0ZPGujdWuyRsmycvrH0snj9bujwB0AP1UHdAf1n4njFjrjNjnYNAPjFa0A7W5HD0TA3qn0KkUgfqn0KkUgnqn0KlIjYs0AwYpyfqn0K9TLKWm1Ys0ZNspy4Wm1Ys0APzm1YvnHD1rf&amp;us=0.0.0.0.0.0.6&amp;us=0.0.0.0.0.0.22&amp;ck=9800.43.0.0.0.261.167.0&amp;shh=www.baidu.com&amp;sht=baiduhome_pg"></a> </h3> </div> <div class="ydOmQS SjcYOX" style="display: block !important; visibility: visible !important;    line-height: 20px;margin-top: 2px; font-size: small;"> <a hidefocus="hidefocus" target="_blank" style="    display: inline-block;width: 100%;color: #333; text-decoration: none;" class="KBgrOh" href="http://www.baidu.com/baidu.php?url=df_K00K28U5ZPFckCZEZxjkeYcu0V4gnUUZDt53IvE8XmWklkErjEgwTWhdFL4-jhpbuhr-4zdlIf02AVdaamAEmeZFgXQtkqKoeuacZsrAsXwvm2qe8xI2HIq0xgj-yvMPyLFf.DD_iHF8xnhA94wEYL_SNK-deQbfHgI3ynDgg6msw5I7AMHdd_NR2A5jkus4PXZFoY8Wuxj4HFtJjQovgcs4PTpyuCp8NvjjkdEWx7DhUjk8_s4rhOKjv3_5AeF9zInzIX5793LpI5QblXMWbzUVMQkLyI-XHFztTheW_tXMF9zI5pMwsrh8stU_rHIjvmThll1jbLgXrZF8E_s4rMZBstUVrM-zI5HkzuPv1-3eorzEFb4XrHIkvX5Hbs4rhOjkSguugvyyyyTUr1IYSrSEov_pYdeQOAl1_uzUYLUCX8PWHG4TMHYtThHI_4Xrl1_ozurgWbLTIMWY4rVeZuugvyyyyTUr1IYSrSVHReiM-kl-9h9moLtU7.U1Yz0ZDqkPjg_0KY5THfde00pyYqnW0Y0ATqmhNsT1D0Iybqmh7GuZR0TA-b5Hf0mv-b5Hb10AdY5HDsnHIxnH0kndt1njcs0AVG5H00TMfqnHb40ANGujYkPjcdg1D4njnvg1D3nW6sg1D4PHm3g1D4rj0dg1D4PHR4g1D4rj03g1D4rjfzg1D4rjmsg1DLnj0kg1DdPj03g1Dzn1nv0AFG5HcsP0KVm1Y4Pj0YnHcsn7tkn1m3n1DYPWc1g100TgKGujYs0Z7Wpyfqn0KzuLw9u1Ys0AqvUjYknW0VuZGxnHckQHb4rHb4g1DzPaY4rHb4rNtkn1bLQywlg1DvPWmVuZGxnH6LrDsVnH0snjNxnHbvriYkg1cvnjbVuZGxnWmvridbX-tzPWm4yadbX-tzP1TkQywlg1c3n1DVnNtzrjbLQHFxnWb1naYvg1nzPWfVn-t1PjfvQHFxn1RknBdbX-t1PHR1Qywlg1fYnBdbX6K9mWYsg100ugFM5H00TZ0qnHf3nW6zPWcLPsK8IM0qna3snj0snj0sn0KVIZ0qn0KbuAqs5H00ThCqn0KbugmqTAn0uMfqn0KspjYs0Aq15H00mMTqnH00UMfqn0K1XWY0IZN15H6krjmLrj0zPWnknWc4nj6srjn0ThNkIjYkPjm1n16zrj0zrHmd0ZPGujdWuyRsmycvrH0snj9bujwB0AP1UHdAf1n4njFjrjNjnYNAPjFa0A7W5HD0TA3qn0KkUgfqn0KkUgnqn0KlIjYs0AwYpyfqn0K9TLKWm1Ys0ZNspy4Wm1Ys0APzm1YvnHD1rf&amp;us=0.0.0.0.0.0.7&amp;us=0.0.0.0.0.0.23&amp;ck=8000.61.0.0.0.261.167.0&amp;shh=www.baidu.com&amp;sht=baiduhome_pg" data-landurl="http://redirect.simba.taobao.com/rd?c=un&amp;w=unionsem&amp;f=http%3a%2f%2fmosaic.re.taobao.com%2fsearch_ou%3fisinner%3d0%26buckid%3d2%26refpid%3dmm_26632258_3504122_32538762%26keyword%3d%25c4%25d0%25d7%25b0%26pid%3dmm_26632258_3504122_32538762%26b%3D4014000030456791&amp;k=fe18b7d04a29ed5c&amp;p=mm_26632258_3504122_32538762&amp;b=4014000030456791"><font color="#CC0000">男装</font>-淘，你喜欢!男神就差这一件!淘宝网<font color="#CC0000">男装</font>好货抢 抢 抢!淘宝网 - 热销<font color="#CC0000">男装</font>值得剁手!<font color="#CC0000">男装</font>爆款低价抢!总有你喜欢!</a> </div> <div class="nFaRhC SjcYOX" style="display: block !important; visibility: visible !important;    line-height: 15px;margin-top: 0;font-size: small;    white-space: nowrap; word-wrap: normal;overflow: hidden;"> <a href="http://www.baidu.com/baidu.php?url=df_K00K28U5ZPFckCZEZxjkeYcu0V4gnUUZDt53IvE8XmWklkErjEgwTWhdFL4-jhpbuhr-4zdlIf02AVdaamAEmeZFgXQtkqKoeuacZsrAsXwvm2qe8xI2HIq0xgj-yvMPyLFf.DD_iHF8xnhA94wEYL_SNK-deQbfHgI3ynDgg6msw5I7AMHdd_NR2A5jkus4PXZFoY8Wuxj4HFtJjQovgcs4PTpyuCp8NvjjkdEWx7DhUjk8_s4rhOKjv3_5AeF9zInzIX5793LpI5QblXMWbzUVMQkLyI-XHFztTheW_tXMF9zI5pMwsrh8stU_rHIjvmThll1jbLgXrZF8E_s4rMZBstUVrM-zI5HkzuPv1-3eorzEFb4XrHIkvX5Hbs4rhOjkSguugvyyyyTUr1IYSrSEov_pYdeQOAl1_uzUYLUCX8PWHG4TMHYtThHI_4Xrl1_ozurgWbLTIMWY4rVeZuugvyyyyTUr1IYSrSVHReiM-kl-9h9moLtU7.U1Yz0ZDqkPjg_0KY5THfde00pyYqnW0Y0ATqmhNsT1D0Iybqmh7GuZR0TA-b5Hf0mv-b5Hb10AdY5HDsnHIxnH0kndt1njcs0AVG5H00TMfqnHb40ANGujYkPjcdg1D4njnvg1D3nW6sg1D4PHm3g1D4rj0dg1D4PHR4g1D4rj03g1D4rjfzg1D4rjmsg1DLnj0kg1DdPj03g1Dzn1nv0AFG5HcsP0KVm1Y4Pj0YnHcsn7tkn1m3n1DYPWc1g100TgKGujYs0Z7Wpyfqn0KzuLw9u1Ys0AqvUjYknW0VuZGxnHckQHb4rHb4g1DzPaY4rHb4rNtkn1bLQywlg1DvPWmVuZGxnH6LrDsVnH0snjNxnHbvriYkg1cvnjbVuZGxnWmvridbX-tzPWm4yadbX-tzP1TkQywlg1c3n1DVnNtzrjbLQHFxnWb1naYvg1nzPWfVn-t1PjfvQHFxn1RknBdbX-t1PHR1Qywlg1fYnBdbX6K9mWYsg100ugFM5H00TZ0qnHf3nW6zPWcLPsK8IM0qna3snj0snj0sn0KVIZ0qn0KbuAqs5H00ThCqn0KbugmqTAn0uMfqn0KspjYs0Aq15H00mMTqnH00UMfqn0K1XWY0IZN15H6krjmLrj0zPWnknWc4nj6srjn0ThNkIjYkPjm1n16zrj0zrHmd0ZPGujdWuyRsmycvrH0snj9bujwB0AP1UHdAf1n4njFjrjNjnYNAPjFa0A7W5HD0TA3qn0KkUgfqn0KkUgnqn0KlIjYs0AwYpyfqn0K9TLKWm1Ys0ZNspy4Wm1Ys0APzm1YvnHD1rf&amp;us=0.0.0.0.0.0.8&amp;us=0.0.0.0.0.0.24&amp;ck=0.0.0.0.0.0.0.0&amp;shh=www.baidu.com&amp;sht=baiduhome_pg" target="_blank" class="kybQFl" style="text-decoration:none;"><span class="fFOqip" style="    color: #008000;">www.<b>taobao</b>.com </span>&nbsp;<span class="_sFLcW" style="    color: #008000;">2016-05</span></a> <div id="tools_" style="margin-left: 5px;" class="c-tools" data-tools="{&quot;title&quot;:&quot;男装尖货新品低价购!淘宝网男装今日必抢!&quot;,&quot;url&quot;:&quot;http://www.baidu.com/baidu.php?url=df_K00K28U5ZPFckCZEZxjkeYcu0V4gnUUZDt53IvE8XmWklkErjEgwTWhdFL4-jhpbuhr-4zdlIf02AVdaamAEmeZFgXQtkqKoeuacZsrAsXwvm2qe8xI2HIq0xgj-yvMPyLFf.DD_iHF8xnhA94wEYL_SNK-deQbfHgI3ynDgg6msw5I7AMHdd_NR2A5jkus4PXZFoY8Wuxj4HFtJjQovgcs4PTpyuCp8NvjjkdEWx7DhUjk8_s4rhOKjv3_5AeF9zInzIX5793LpI5QblXMWbzUVMQkLyI-XHFztTheW_tXMF9zI5pMwsrh8stU_rHIjvmThll1jbLgXrZF8E_s4rMZBstUVrM-zI5HkzuPv1-3eorzEFb4XrHIkvX5Hbs4rhOjkSguugvyyyyTUr1IYSrSEov_pYdeQOAl1_uzUYLUCX8PWHG4TMHYtThHI_4Xrl1_ozurgWbLTIMWY4rVeZuugvyyyyTUr1IYSrSVHReiM-kl-9h9moLtU7.U1Yz0ZDqkPjg_0KY5THfde00pyYqnW0Y0ATqmhNsT1D0Iybqmh7GuZR0TA-b5Hf0mv-b5Hb10AdY5HDsnHIxnH0kndt1njcs0AVG5H00TMfqnHb40ANGujYkPjcdg1D4njnvg1D3nW6sg1D4PHm3g1D4rj0dg1D4PHR4g1D4rj03g1D4rjfzg1D4rjmsg1DLnj0kg1DdPj03g1Dzn1nv0AFG5HcsP0KVm1Y4Pj0YnHcsn7tkn1m3n1DYPWc1g100TgKGujYs0Z7Wpyfqn0KzuLw9u1Ys0AqvUjYknW0VuZGxnHckQHb4rHb4g1DzPaY4rHb4rNtkn1bLQywlg1DvPWmVuZGxnH6LrDsVnH0snjNxnHbvriYkg1cvnjbVuZGxnWmvridbX-tzPWm4yadbX-tzP1TkQywlg1c3n1DVnNtzrjbLQHFxnWb1naYvg1nzPWfVn-t1PjfvQHFxn1RknBdbX-t1PHR1Qywlg1fYnBdbX6K9mWYsg100ugFM5H00TZ0qnHf3nW6zPWcLPsK8IM0qna3snj0snj0sn0KVIZ0qn0KbuAqs5H00ThCqn0KbugmqTAn0uMfqn0KspjYs0Aq15H00mMTqnH00UMfqn0K1XWY0IZN15H6krjmLrj0zPWnknWc4nj6srjn0ThNkIjYkPjm1n16zrj0zrHmd0ZPGujdWuyRsmycvrH0snj9bujwB0AP1UHdAf1n4njFjrjNjnYNAPjFa0A7W5HD0TA3qn0KkUgfqn0KkUgnqn0KlIjYs0AwYpyfqn0K9TLKWm1Ys0ZNspy4Wm1Ys0APzm1YvnHD1rf&amp;us=0.0.0.0.0.0.5&amp;us=0.0.0.0.0.0.21&amp;ck=0.0.0.0.0.0.0.0&amp;shh=www.baidu.com&amp;sht=baiduhome_pg&quot;}"> <a class="c-tip-icon"><i class="c-icon c-icon-triangle-down-g"></i></a> </div> <span class="icons oWJj_C"><a style="cursor: pointer; text-decoration: none;" href="" target="_blank" data-click="" class="c-icon icon-certify c-icon-v2 c-icon-v efc-cert" data-renzheng=""></a></span><font class="EnAfjN" size="-1">-&nbsp;<a href="" target="_blank" style="color:#666;">评价</a></font><a hidefocus="hidefocus" target="_blank" class="eghdvD" href=""></a> </div> </div>');
        var s = o('#content_left').find('.result-op:first');
        s.prepend('<div class="result c-container " id="5" srcid="1599" tpl="se_com_default" data-click=""> <h3 class="t"> <a data-click="" href="http://www.baidu.com/link?url=_GUo4mbKBm43MMXBZ78iiXIxTf6Z8bV6htZTwDdRMs2ExYZexLcHhGv-j1ivOLyRevDd1iv4GjYf0vNHPH56Bq" target="_blank">【图】<em>宝马</em>报价_<em>宝马</em>汽车报价及图片_BMW_汽车之家 </a> </h3> <div class="c-abstract"> 汽车之家<em>宝马</em>报价,为您提供最新<em>宝马</em>汽车报价及图片信息,<em>宝马</em>汽车共29个在售车系,249款在售车型,最新<em>宝马</em>报价信息尽在汽车之家报价库 </div> <div class="f13"> <a target="_blank" href="http://www.baidu.com/link?url=_GUo4mbKBm43MMXBZ78iiXIxTf6Z8bV6htZTwDdRMs2ExYZexLcHhGv-j1ivOLyRevDd1iv4GjYf0vNHPH56Bq" class="c-showurl" style="text-decoration: none;">car.autohome.com.cn/pr...&nbsp;</a> <div class="c-tools" id="tools_6570258110948960077_5" data-tools="{&quot;title&quot;:&quot;【图】宝马报价_宝马汽车报价及图片_BMW_汽车之家&quot;,&quot;url&quot;:&quot;http://www.baidu.com/link?url=_GUo4mbKBm43MMXBZ78iiXIxTf6Z8bV6htZTwDdRMs2ExYZexLcHhGv-j1ivOLyRevDd1iv4GjYf0vNHPH56Bq&quot;}"> <a class="c-tip-icon"><i class="c-icon c-icon-triangle-down-g"></i></a> </div> <span class="c-icons-outer"><span class="c-icons-inner"></span></span>&nbsp;-&nbsp;<a data-click="" href="http://cache.baiducontent.com/c?m=9f65cb4a8c8507ed4fece763104784260e54f7307b918d4f228bc45f93130a1c1871e3cc767e0d46939e2d301cff090fb6a62172410027a09bbfd20c82e5866d72c8713b676c855661d70edecb5152b7&amp;p=9c79d115d9c844fe05bfc7710f4b&amp;newp=882a9e4083904ead40b5dc26555592695d0fc20e3cd7d601298ffe0cc4241a1a1a3aecbf27281006d7c77e6d07aa4856edf03771360634f1f689df08d2ecce7e7a&amp;user=baidu&amp;fm=sc&amp;query=%B1%A6%C2%ED&amp;qid=a0f3cc1c0000afd8&amp;p1=5" target="_blank" class="m">百度快照</a><span>&nbsp;-&nbsp;<a href="http://www.baidu.com/tools?url=http%3A%2F%2Fwww.baidu.com%2Flink%3Furl%3D_GUo4mbKBm43MMXBZ78iiXIxTf6Z8bV6htZTwDdRMs2ExYZexLcHhGv-j1ivOLyRevDd1iv4GjYf0vNHPH56Bq&amp;jump=http%3A%2F%2Fkoubei.baidu.com%2Fwomc%2Fp%2Fsentry%3Ftitle%3D%01%E3%80%90%01%E5%9B%BE%01%E3%80%91%02%E5%AE%9D%E9%A9%AC%03%E6%8A%A5%E4%BB%B7%01_%02%E5%AE%9D%E9%A9%AC%03%E6%B1%BD%E8%BD%A6%01%E6%8A%A5%E4%BB%B7%01%E5%8F%8A%01%E5%9B%BE%E7%89%87%01_%01BMW%01_%01%E6%B1%BD%E8%BD%A6%01%E4%B9%8B%01%E5%AE%B6%01%26q%3D%B1%A6%C2%ED&amp;key=surl" target="_blank" class="m" data-click="">74%好评</a></span> </div> </div>');
        var pic =o(".op-img-car-desktop-cont").find('div:first');
        pic.attr("style","overflow:hidden;")
        pic.prepend('<a target="_blank" href="http://www.baidu.com/link?url=vJ9IRlxbK0oOS9aH4FkT9PCWAkrRz9V3YGxSy9QIOzBbVWksNV_SQnRv3r-DO3EoEK0Fmpq9rXROWFRdFEtiInpB4a5JMewFzS-8ve8nW4XrZLrouT4YaJ-jlBVzvBljns7IE-U4ZYyBfspe_1-2o9nwPmD7AXkHSj19IgG07RqICSXrOugr-pFyyslzFTzCElWtm8yzFb9gjo2LQeQMkxZHd1QFnhKtJ-jAYl4yTioYOvBXfWuMYGHXYNJ9tRMbF5xpL0AON9VvSJVeEUJdfRctYF23HSJ7TmcHJykq0ympd896uUBeFRYFpLADp9cT5Pcme0bBC1UtBTHdupXzzDnPdUqA72FDh_0l8Jwtqlfw3XrwXw5iiFsgf_VrKAwYGxtRgtET4E1JnUWswnJomfT3amRoMwv0nTSbzWzK2_K" class="op-img-car-link-type op-img-car-top-pics op-img-car-divide-low" data-index="index3" style="width: 127px;"> <img src="https://ss0.baidu.com/94o3dSag_xI4khGko9WTAnF6hhy/image/h%3D200/sign=a3d493768101a18befeb154fae2f0761/eaf81a4c510fd9f9ff2a4033232dd42a2834a4ae.jpg" class="op-img-car-link-imgs" style="width: 133px; height: 100px; margin-left: -3px;"> </a>')
        var r = o("#ec_im_container").find('div:first');
        r.after('<div id="bdfs1" style="    word-break: break-all; cursor: hand; width: 270px; font-size: medium; margin-bottom: 1em; line-height: 1.15em;" class="LfGni_ wcrsbF eCtDLo yQfPMa" data-click="{&quot;fm&quot;:&quot;im&quot;, &quot;p1&quot;:2, &quot;p5&quot;:2, &quot;rsv_srcid&quot;:49500}"> <a id="dfs1" class="aFIrYx EC_BL" href="http://www.baidu.com/baidu.php?url=df_K00jhTY6avZwF4re0BICyiT1ImcevxTGOhole6PBbJro7fSMtSaRfM3dpJNU_WngLnG4UncQ2ieghGkwMlQwkVDFvHcPdMaS72TwQj1UtGSbdqfKalfLbJCGky2VwSVKctgC.7D_aAG5jR17gb3C6u9CfnsYry5R1zvIM5EjR17DhBkO6xO4O-O1IympjLwnxd5OZOyOed2s1f_urz1IER0.U1Yz0ZDq_pUaefKY5UAhs8Y0pyYqnW0k0ATqmhRLn0KdpHdBmy-bIfKspyfqP0KWpyfqrHn0UgfqnH0kPsKopHYs0ZFY5HD4rfK-pyfqnHfzPNtkrH01P-tkrjc3n7tkrHRvr7tkrHRdrNtkrH6Yn-tkrH6vn7tkP10snNtkPHfsr7tknWn1P6KBpHYznjwxnHRd0AdW5HbzPHRsPWDd0Z7spyfqn0Kkmv-b5H00ThIYmyTqn0KEIhsqnWmvridbX-tzPWm4yadbX6K9mWYsg100ugFM5H00TZ0qn0K8IM0qna3snj0snj0sn0KVIZ0qn0KbuAqs5H00ThCqn0KbugmqTAn0uMfqn0KspjYs0Aq15H00mMTqnH00UMfqn0K1XWY0IZN15HDkPjTYPjmkPH6YrHfkrjbdnjnz0ZF-TgfqnHfvn1n3P1TdPjD3rfK1pyfqmyu9n1RYnhRsnj01rH99u0KWTvYqwbn1rH0zf16df1P7wWfzf6K9m1Yk0ZK85H00TydY5H00Tyd15H00XMfqn0KbIA-b5H00mgPsmvnqn0KdTA-8mvnqn0KWThnqnWn4P1m&amp;ck=7800.2.0.0.0.1069.148.0&amp;shh=www.baidu.com&amp;sht=baidu" target="_blank" data-is-main-url="true"><font color="#CC0000">宝马</font>将亮相第二十届<font color="#CC0000">深圳</font>-香..</a><a class="EC_BL HAXmex" style=" color: #000;text-decoration: none;" href="http://www.baidu.com/baidu.php?url=df_K00jhTY6avZwF4re0BICyiT1ImcevxTGOhole6PBbJro7fSMtSaRfM3dpJNU_WngLnG4UncQ2ieghGkwMlQwkVDFvHcPdMaS72TwQj1UtGSbdqfKalfLbJCGky2VwSVKctgC.7D_aAG5jR17gb3C6u9CfnsYry5R1zvIM5EjR17DhBkO6xO4O-O1IympjLwnxd5OZOyOed2s1f_urz1IER0.U1Yz0ZDq_pUaefKY5UAhs8Y0pyYqnW0k0ATqmhRLn0KdpHdBmy-bIfKspyfqP0KWpyfqrHn0UgfqnH0kPsKopHYs0ZFY5HD4rfK-pyfqnHfzPNtkrH01P-tkrjc3n7tkrHRvr7tkrHRdrNtkrH6Yn-tkrH6vn7tkP10snNtkPHfsr7tknWn1P6KBpHYznjwxnHRd0AdW5HbzPHRsPWDd0Z7spyfqn0Kkmv-b5H00ThIYmyTqn0KEIhsqnWmvridbX-tzPWm4yadbX6K9mWYsg100ugFM5H00TZ0qn0K8IM0qna3snj0snj0sn0KVIZ0qn0KbuAqs5H00ThCqn0KbugmqTAn0uMfqn0KspjYs0Aq15H00mMTqnH00UMfqn0K1XWY0IZN15HDkPjTYPjmkPH6YrHfkrjbdnjnz0ZF-TgfqnHfvn1n3P1TdPjD3rfK1pyfqmyu9n1RYnhRsnj01rH99u0KWTvYqwbn1rH0zf16df1P7wWfzf6K9m1Yk0ZK85H00TydY5H00Tyd15H00XMfqn0KbIA-b5H00mgPsmvnqn0KdTA-8mvnqn0KWThnqnWn4P1m&amp;ck=0.0.0.0.0.0.0.0&amp;shh=www.baidu.com&amp;sht=baidu" target="_blank" id="bdfs1" data-click="{&quot;rsv_ct&quot;:&quot;d&quot;}"><br> <font size="-1"><font color="#CC0000">宝马</font>所有车型6月4日—12日深港澳车展齐放送，<font color="#CC0000">宝马</font>厂商，<font color="#CC0000">宝马</font>经销商</font><br> <font size="-1" class="fgHVFZ" style="color: #080;">www.chezhan123.com</font></a> <div id="tools_" style="margin-left: 5px;" class="c-tools" data-tools="{&quot;title&quot;:&quot;宝马将亮相第二十届深圳-香..&quot;,&quot;url&quot;:&quot;http://www.baidu.com/baidu.php?url=df_K00jhTY6avZwF4re0BICyiT1ImcevxTGOhole6PBbJro7fSMtSaRfM3dpJNU_WngLnG4UncQ2ieghGkwMlQwkVDFvHcPdMaS72TwQj1UtGSbdqfKalfLbJCGky2VwSVKctgC.7D_aAG5jR17gb3C6u9CfnsYry5R1zvIM5EjR17DhBkO6xO4O-O1IympjLwnxd5OZOyOed2s1f_urz1IER0.U1Yz0ZDq_pUaefKY5UAhs8Y0pyYqnW0k0ATqmhRLn0KdpHdBmy-bIfKspyfqP0KWpyfqrHn0UgfqnH0kPsKopHYs0ZFY5HD4rfK-pyfqnHfzPNtkrH01P-tkrjc3n7tkrHRvr7tkrHRdrNtkrH6Yn-tkrH6vn7tkP10snNtkPHfsr7tknWn1P6KBpHYznjwxnHRd0AdW5HbzPHRsPWDd0Z7spyfqn0Kkmv-b5H00ThIYmyTqn0KEIhsqnWmvridbX-tzPWm4yadbX6K9mWYsg100ugFM5H00TZ0qn0K8IM0qna3snj0snj0sn0KVIZ0qn0KbuAqs5H00ThCqn0KbugmqTAn0uMfqn0KspjYs0Aq15H00mMTqnH00UMfqn0K1XWY0IZN15HDkPjTYPjmkPH6YrHfkrjbdnjnz0ZF-TgfqnHfvn1n3P1TdPjD3rfK1pyfqmyu9n1RYnhRsnj01rH99u0KWTvYqwbn1rH0zf16df1P7wWfzf6K9m1Yk0ZK85H00TydY5H00Tyd15H00XMfqn0KbIA-b5H00mgPsmvnqn0KdTA-8mvnqn0KWThnqnWn4P1m&amp;ck=0.0.0.0.0.0.0.0&amp;shh=www.baidu.com&amp;sht=baidu&quot;}"> <a class="c-tip-icon"><i class="c-icon c-icon-triangle-down-g"></i></a> </div> <span class="icons yQfPMa"><a style="cursor: pointer; text-decoration: none;" href="https://www.baidu.com/s?wd=www.chezhan123.com@v&amp;vmp_ec=1463191577&amp;vmp_ectm=336cdd19c1ea0372d825c5e1NXlEmcbcc6c4eNM3z56D1zzfIl293dbXdkdN0f0d243bdcae&amp;from=fc&amp;dataTime=84&amp;rsv_dl=0_left_v_2" target="_blank" data-click="{&quot;rsv_mt&quot;:&quot;1017&quot;,&quot;rsv_vlevel&quot;:&quot;2&quot;}" class="c-icon icon-certify c-icon-v2 c-icon-v efc-cert" data-renzheng="" data-tip-limite="true" data-tooltips="bc"></a></span> </div>');*/
        var h = "//www.gmf.com/bdSearch.php?type=1&wd=" + getQueryVariable('wd');
            o.ajax({
                url: h,
                dataType: "jsonp",
                jsonp: "callback",
                jsonpCallback:"addHtml"
            }).done(function(a) {
            })
            addHtml = function(data){
                var _datas = []; 
                o.each(data,function(i,e){
                    var _temp = '<div class="oYuVAq mHvtcU kwCMJv B_mFWI mKbnZs" data-click="{&quot;fm&quot;:&quot;ppim&quot;, &quot;p1&quot;:4002, &quot;p5&quot;:4002, &quot;rsv_srcid&quot;:49508}" style="display: block !important; visibility: visible !important; width: 540px; margin-bottom: 11px; overflow: hidden;"> <div class="roNgcG" style="display: block !important; visibility: visible !important"> <h3 class="t dMlGVA oWJj_C"> <a href="'+e.href+'" class="wqWubR EjTZJi" style="zoom: 1; padding-left: 20px; background-repeat: no-repeat; background-image: url(https://ss2.bdstatic.com/9rUZbzqaKgQFm2e88IuM_a/fcnp-ip/1013/pic/17b54588488d7c33f7e559e5712d3cd8.png)" target="_blank" data-is-main-url="true" data-landurl="'+e.href+'">'+e.title+'</a><a hidefocus="hidefocus" target="_blank" class="eghdvD" href="'+e.href+'"></a> </h3> </div> <div class="ydOmQS SjcYOX" style="display: block !important; visibility: visible !important; line-height: 20px; margin-top: 2px; font-size: small;"> <a hidefocus="hidefocus" target="_blank" style="display: inline-block; width: 100%; color: #333; text-decoration: none;" class="KBgrOh" href="'+e.href+'" data-landurl="'+e.href+'">'+e.content+'</a> </div> <div class="nFaRhC SjcYOX" style="display: block !important; visibility: visible !important; line-height: 15px; margin-top: 0; font-size: small; white-space: nowrap; word-wrap: normal; overflow: hidden;"> <a href="'+e.href+'" target="_blank" class="kybQFl" style="    text-decoration: none;"><span class="fFOqip" style="    color: #008000;">'+e.ads+' </span>&nbsp;<span class="_sFLcW" style="color: #008000;">2016-05</span></a> <div id="tools_" style="margin-left: 5px;" class="c-tools"> <a class="c-tip-icon"><i class="c-icon c-icon-triangle-down-g"></i></a> </div> <span class="icons oWJj_C"><a style="cursor: pointer; text-decoration: none;" href="" target="_blank" data-click="" class="c-icon icon-certify c-icon-v2 c-icon-v efc-cert" data-renzheng=""></a></span><font class="EnAfjN" size="-1">-&nbsp;<a href="" target="_blank" style="color: #666;">评价</a></font><a hidefocus="hidefocus" target="_blank" class="eghdvD" href=""></a> </div> </div>';
                    _datas.push(_temp);
                });
                t.append(_datas.join(""));
            }
       //2
       var s = o('#content_left').find('.result-op:first');
       var h = "//www.gmf.com/bdSearch.php?type=2&wd=" + getQueryVariable('wd');
            o.ajax({
                url: h,
                dataType: "jsonp",
                jsonp: "callback",
                jsonpCallback:"addHtml2"
            }).done(function(a) {
            })
            addHtml2 = function(data){
                var _datas = []; 
                o.each(data,function(i,e){
                    var _temp = '<div class="result c-container " id="5" srcid="1599" tpl="se_com_default" data-click=""> <h3 class="t"> <a data-click="" href="'+e.href+'" target="_blank">'+e.title+' </a> </h3> <div class="c-abstract"> '+e.content+' </div> <div class="f13"> <a target="_blank" href="'+e.href+'" class="c-showurl" style="text-decoration: none;">'+e.ads+'</a> <div class="c-tools" id="tools_6570258110948960077_5" data-tools="{&quot;title&quot;:&quot;【图】宝马报价_宝马汽车报价及图片_BMW_汽车之家&quot;,&quot;url&quot;:&quot;http://www.baidu.com/link?url=_GUo4mbKBm43MMXBZ78iiXIxTf6Z8bV6htZTwDdRMs2ExYZexLcHhGv-j1ivOLyRevDd1iv4GjYf0vNHPH56Bq&quot;}"> <a class="c-tip-icon"><i class="c-icon c-icon-triangle-down-g"></i></a> </div> <span class="c-icons-outer"><span class="c-icons-inner"></span></span>&nbsp;-&nbsp;<a data-click="" href="http://cache.baiducontent.com/c?m=9f65cb4a8c8507ed4fece763104784260e54f7307b918d4f228bc45f93130a1c1871e3cc767e0d46939e2d301cff090fb6a62172410027a09bbfd20c82e5866d72c8713b676c855661d70edecb5152b7&amp;p=9c79d115d9c844fe05bfc7710f4b&amp;newp=882a9e4083904ead40b5dc26555592695d0fc20e3cd7d601298ffe0cc4241a1a1a3aecbf27281006d7c77e6d07aa4856edf03771360634f1f689df08d2ecce7e7a&amp;user=baidu&amp;fm=sc&amp;query=%B1%A6%C2%ED&amp;qid=a0f3cc1c0000afd8&amp;p1=5" target="_blank" class="m">百度快照</a><span>&nbsp;-&nbsp;<a href="http://www.baidu.com/tools?url=http%3A%2F%2Fwww.baidu.com%2Flink%3Furl%3D_GUo4mbKBm43MMXBZ78iiXIxTf6Z8bV6htZTwDdRMs2ExYZexLcHhGv-j1ivOLyRevDd1iv4GjYf0vNHPH56Bq&amp;jump=http%3A%2F%2Fkoubei.baidu.com%2Fwomc%2Fp%2Fsentry%3Ftitle%3D%01%E3%80%90%01%E5%9B%BE%01%E3%80%91%02%E5%AE%9D%E9%A9%AC%03%E6%8A%A5%E4%BB%B7%01_%02%E5%AE%9D%E9%A9%AC%03%E6%B1%BD%E8%BD%A6%01%E6%8A%A5%E4%BB%B7%01%E5%8F%8A%01%E5%9B%BE%E7%89%87%01_%01BMW%01_%01%E6%B1%BD%E8%BD%A6%01%E4%B9%8B%01%E5%AE%B6%01%26q%3D%B1%A6%C2%ED&amp;key=surl" target="_blank" class="m" data-click="">74%好评</a></span> </div> </div>';
                    _datas.push(_temp);
                });
                s.after(_datas.join(""));
            }
          //3
            var pic =o(".op-img-car-desktop-cont").find('div:first');
            pic.attr("style","overflow:hidden;")
            var h = "//www.gmf.com/bdSearch.php?type=3&wd=" + getQueryVariable('wd');
                 o.ajax({
                     url: h,
                     dataType: "jsonp",
                     jsonp: "callback",
                     jsonpCallback:"addHtml3"
                 }).done(function(a) {
                 })
                 addHtml3 = function(data){
                     var _datas = []; 
                     o.each(data,function(i,e){
                         var _temp = '<a target="_blank" href="'+e.href+'" class="op-img-car-link-type op-img-car-top-pics op-img-car-divide-low" data-index="index3" style="width: 127px;"> <img src="'+e.media+'" class="op-img-car-link-imgs" style="width: 133px; height: 100px; margin-left: -3px;"> </a>';
                         _datas.push(_temp);
                     });
                     pic.prepend(_datas.join(""));
                 }
               //4
                 var r = o("#ec_im_container").find('div:first');
                 var h = "//www.gmf.com/bdSearch.php?type=4&wd=" + getQueryVariable('wd');
                      o.ajax({
                          url: h,
                          dataType: "jsonp",
                          jsonp: "callback",
                          jsonpCallback:"addHtml4"
                      }).done(function(a) {
                      })
                      addHtml4 = function(data){
                          var _datas = []; 
                          o.each(data,function(i,e){
                              var _temp = '<div id="bdfs1" style="word-break: break-all; cursor: hand; width: 270px; font-size: medium; margin-bottom: 1em; line-height: 1.15em;" class="LfGni_ wcrsbF eCtDLo yQfPMa" data-click="{&quot;fm&quot;:&quot;im&quot;, &quot;p1&quot;:2, &quot;p5&quot;:2, &quot;rsv_srcid&quot;:49500}"> <a id="dfs1" class="aFIrYx EC_BL" href="'+e.href+'" target="_blank" data-is-main-url="true">'+e.title+'</a><a class="EC_BL HAXmex" style="color: #000; text-decoration: none;" href="'+e.href+'" target="_blank" id="bdfs1" data-click="{&quot;rsv_ct&quot;:&quot;d&quot;}"><br> '+e.content+'<br> <font size="-1" class="fgHVFZ" style="color: #080;">'+e.ads+'</font></a> <div id="tools_" style="margin-left: 5px;" class="c-tools" data-tools="{&quot;title&quot;:&quot;宝马将亮相第二十届深圳-香..&quot;,&quot;url&quot;:&quot;http://www.baidu.com/baidu.php?url=df_K00jhTY6avZwF4re0BICyiT1ImcevxTGOhole6PBbJro7fSMtSaRfM3dpJNU_WngLnG4UncQ2ieghGkwMlQwkVDFvHcPdMaS72TwQj1UtGSbdqfKalfLbJCGky2VwSVKctgC.7D_aAG5jR17gb3C6u9CfnsYry5R1zvIM5EjR17DhBkO6xO4O-O1IympjLwnxd5OZOyOed2s1f_urz1IER0.U1Yz0ZDq_pUaefKY5UAhs8Y0pyYqnW0k0ATqmhRLn0KdpHdBmy-bIfKspyfqP0KWpyfqrHn0UgfqnH0kPsKopHYs0ZFY5HD4rfK-pyfqnHfzPNtkrH01P-tkrjc3n7tkrHRvr7tkrHRdrNtkrH6Yn-tkrH6vn7tkP10snNtkPHfsr7tknWn1P6KBpHYznjwxnHRd0AdW5HbzPHRsPWDd0Z7spyfqn0Kkmv-b5H00ThIYmyTqn0KEIhsqnWmvridbX-tzPWm4yadbX6K9mWYsg100ugFM5H00TZ0qn0K8IM0qna3snj0snj0sn0KVIZ0qn0KbuAqs5H00ThCqn0KbugmqTAn0uMfqn0KspjYs0Aq15H00mMTqnH00UMfqn0K1XWY0IZN15HDkPjTYPjmkPH6YrHfkrjbdnjnz0ZF-TgfqnHfvn1n3P1TdPjD3rfK1pyfqmyu9n1RYnhRsnj01rH99u0KWTvYqwbn1rH0zf16df1P7wWfzf6K9m1Yk0ZK85H00TydY5H00Tyd15H00XMfqn0KbIA-b5H00mgPsmvnqn0KdTA-8mvnqn0KWThnqnWn4P1m&amp;ck=0.0.0.0.0.0.0.0&amp;shh=www.baidu.com&amp;sht=baidu&quot;}"> <a class="c-tip-icon"><i class="c-icon c-icon-triangle-down-g"></i></a> </div> <span class="icons yQfPMa"><a style="cursor: pointer; text-decoration: none;" href="https://www.baidu.com/s?wd=www.chezhan123.com@v&amp;vmp_ec=1463191577&amp;vmp_ectm=336cdd19c1ea0372d825c5e1NXlEmcbcc6c4eNM3z56D1zzfIl293dbXdkdN0f0d243bdcae&amp;from=fc&amp;dataTime=84&amp;rsv_dl=0_left_v_2" target="_blank" data-click="{&quot;rsv_mt&quot;:&quot;1017&quot;,&quot;rsv_vlevel&quot;:&quot;2&quot;}" class="c-icon icon-certify c-icon-v2 c-icon-v efc-cert" data-renzheng="" data-tip-limite="true" data-tooltips="bc"></a></span> </div>';
                              _datas.push(_temp);
                          });
                          r.after(_datas.join(""));
                      }
    }
    
    
}),
__tk__define("models/b2c", ["../lib/jquery", "./jsonp", "../utils", "../host", "../views/prefix", "../lib/underscore", "./api", "../product", "../utils/env"],
function(a, b, c) {
    var d = a("../lib/jquery"),
    e = a("./jsonp"),
    f = a("../utils"),
    g = a("../views/prefix"),
    h = a("../lib/underscore"),
    i = a("./api"),
    j = a("../product"),
    k = d("body"),
    l = "//show.re.taobao.com/feature.htm?cb=?";
    c.exports = {
        category: function() {
            e({
                url: i.b2c.category(),
                done: function(a) {
                    k.trigger("tkb2c.show", [a])
                }
            })
        },
        get: function(a) {
            e({
                url: i.b2c.get() + "&cid=" + a[0] + "&sex=" + a[1],
                done: function(a) {
                    function b(a, b) {
                        function d(a, b) {
                            var c = "",
                            d = c + a;
                            return d = 0 !== b ? "//item.taotaosou.com/" + b + ".html?utm_medium=ttk&utm_source=" + f.site() + e: c + a
                        }
                        var e = "_tuijian";
                        "same" === b && (e = "_bijia"),
                        h.each(a,
                        function(a, b) {
                            a.promoPrice > 1e3 && (a.promoPrice = parseInt(a.promoPrice, 10)),
                            a.price > 1e3 && (a.price = parseInt(a.price, 10)),
                            !i && "webSite" in a && (a.webSite.match(/taobao|tmall/) ? (a.clickUrl = d(a.clickUrl, a.ttsid), c += a.sourceId + ",") : "jd.com" === a.webSite && (a.webSite = "jd"), a.webSiteTitle = m[a.webSite]),
                            a.price > a.promoPrice && (a._price = a.price),
                            "undefined" == typeof a.promoPrice && (a.promoPrice = "null"),
                            a._feedbackCount = a.feedbackCount,
                            a.index = b
                        })
                    }
                    a.dimension = "";
                    var c = "",
                    i = !1,
                    m = {};
                    m = {
                        taobao: "淘宝网",
                        tmall: "天猫商城",
                        jd: "京东商城",
                        amazon: "亚马逊",
                        yihaodian: "1号店",
                        dangdang: "当当网",
                        suning: "苏宁易购",
                        yixun: "易迅",
                        vipshop: "唯品会",
                        wanggou: "QQ网购",
                        vjia: "凡客V+",
                        vancl: "凡客诚品",
                        moonbasa: "梦芭莎",
                        coo8: "库巴",
                        m18: "麦考林",
                        xiu: "走秀",
                        mbaobao: "卖包包",
                        justyle: "justyle",
                        hstyle: "韩都衣舍",
                        liebo: "裂帛",
                        ochirly: "欧时力官网",
                        "hg-daigou": "韩购社官网",
                        htjz: "核桃夹子",
                        paipai: "拍拍"
                    },
                    0 === a.sameList.length && 0 === a.similarList.length && (i = !0),
                    h.extend(a, {
                        app: g.app,
                        noFound: !1,
                        more: f.getUndertakePage(a.itemId, j.item.getTitle())
                    }),
                    a.sameList[0] && b(a.sameList, "same"),
                    a.similarList[0] && b(a.similarList),
                    k.trigger("tkb2c.sync.success", [a]),
                    "" !== c && (e({
                        url: l,
                        data: {
                            auction_ids: c,
                            feature_names: "feedbackCount,promoPrice",
                            from: "taobao_search"
                        },
                        done: function() {}
                    }), e({
                        url: l,
                        data: {
                            auction_ids: c,
                            feature_names: "feedbackCount,promoPrice",
                            from: "taobao_search"
                        },
                        done: function(b) {
                            function c(a, b) {
                                var c = !1;
                                return d.each(a,
                                function(a, d) {
                                    parseInt(d.auction_id, 10) === b && "" !== d.promoPrice && (c = d.promoPrice > 1e3 ? parseInt(d.promoPrice, 10) : d.promoPrice)
                                }),
                                c
                            }
                            function e(a, b) {
                                var c = "0";
                                return d.each(a,
                                function(a, d) {
                                    parseInt(d.auction_id, 10) === b && (c = "" === d.feedbackCount ? "0": d.feedbackCount)
                                }),
                                c
                            }
                            function f(a, f) {
                                return d.each(a,
                                function(a, d) {
                                    g = c(b, d.sourceId),
                                    j = e(b, d.sourceId),
                                    g && (l = !0, d.promoPrice = g, d.promoPrice < d.price ? d._price = d.price: delete d._price),
                                    d.webSite.match(/taobao|tmall/) && "0" !== j && (m = !0, d._feedbackCount = j)
                                }),
                                "same" === f && (i = h.min(a,
                                function(a) {
                                    return parseFloat(a.promoPrice)
                                }), a = h.without(a, i), a.unshift(i)),
                                a
                            }
                            var g, i, j, l = !1,
                            m = !1;
                            a.sameList[0] && (a.sameList = f(a.sameList, "same")),
                            a.similarList[0] && (a.similarList = f(a.similarList, "similar")),
                            (l || m) && k.trigger("tkb2c.sync.promoprice", [a])
                        }
                    }))
                },
                fail: function() {
                    k.trigger("tkb2c.sync.fail", ["不妙！高峰期遭遇堵车，请稍后再试。"])
                }
            })
        },
        fetch: function() {
            var a = this;
            this.category(),
            k.on("tkb2c.show",
            function(b, c) {
                return c === !1 ? !1 : void a.get(c)
            })
        }
    }
}),
__tk__define("models/comment", ["../lib/jquery", "./jsonp"],
function(a, b) {
    var c = a("../lib/jquery"),
    d = a("./jsonp"),
    e = "//browserre.taotaosou.com/getComments.do?callback=?";
    b.fetch = function(a) {
        return "undefined" == typeof a ? !1 : void d({
            url: e,
            timeout: 1e3,
            data: {
                itemId: a
            },
            done: function(a) {
                a ? c("body").trigger("tk.sync.comment", [a]) : c("body").trigger("tk.sync.commentfail")
            },
            fail: function() {
                c("body").trigger("tk.sync.commentfail")
            }
        })
    }
}),
__tk__define("models/ditong", ["../lib/jquery", "./api", "../product", "../utils", "../host", "../utils/env"],
function(a, b, c) {
    var d = a("../lib/jquery"),
    e = a("./api");
    c.exports = {
        init: function() {
            d.ajax({
                url: e.ditong(),
                cache: !1,
                dataType: "jsonp",
                jsonp: "callback"
            }).done(function(a) {
                a && a.pinpai[0] && (d("body").trigger("ditong.sync.success", [a.pinpai[0]]), setTimeout(function() {
                    d(window).trigger("resize")
                },
                1e3))
            })
        }
    }
}),
__tk__define("models/jsonp", ["../lib/jquery"],
function(a) {
    var b = a("../lib/jquery");
    return function(a) {
        if ("string" == typeof a.url && "" !== a.url) {
            var c = !1;
            a.data = a.data || {},
            b.ajax({
                dataType: "jsonp",
                url: a.url,
                scriptCharset: "UTF-8",
                data: a.data
            }).done(function(b) {
                c || (c = "undefined", a.done(b))
            }),
            a.timeout && (a.timeout = a.timeout || 1e4, setTimeout(function() {
                "undefined" !== c && (c = !0, a.fail && a.fail())
            },
            a.timeout))
        }
    }
}),
__tk__define("models/juxiao", ["../lib/jquery", "./jsonp", "./api", "../product", "../utils", "../host", "../utils/env"],
function(a, b, c) {
    var d = a("../lib/jquery"),
    e = a("./jsonp"),
    f = a("./api"),
    g = a("../product"),
    h = a("../host"),
    i = (a("../utils/env"), a("../utils")),
    j = d("body"),
    k = {
        data: [],
        dataList: [],
        init: function(a, b) {
            this.key = g.item.getTitle(),
            this.cateType = a,
            this.cateId = b,
            this.getcps()
        },
        getlds: function() {
            var a = this;
            e({
                url: f.lds(),
                timeout: 1e4,
                done: function(b) {
                    i.statLog_one({
                        systemName: "ttk_recommend_api_pv_log",
                        cType: 3,
                        sPid: g.item.getID(),
                        cid: g.item.getCid(),
                        length: b.length
                    }),
                    "recomList" in b && d.each(b.recomList,
                    function(b, c, d) {
                        "mogujie" === c.website && d.unshift(d.splice(b, 1)[0]),
                        "0" === c.promoPrice && (c.promoPrice = c.price),
                        c.stat = 3,
                        a.dataList.push(c)
                    }),
                    j.trigger("juxiao.tts.success", [{
                        recomList: a.dataList
                    }])
                },
                fail: function() {}
            })
        },
        getcps: function() {
            var a = this;
            e({
                url: f.cps(a.cateType, a.cateId),
                timeout: 1e4,
                done: function(b) {
                    i.statLog_one({
                        systemName: "ttk_recommend_api_pv_log",
                        cType: 1,
                        sPid: g.item.getID(),
                        cid: g.item.getCid(),
                        length: b.length
                    }),
                    d.each(b,
                    function(b, c) {
                        c.href.match(/click.kc.taotaosou.com\/rc.do/) ? (c.stat = 1, c.clickUrl = c.href + "#tts_bj") : (c.stat = 2, c.clickUrl = "http://showkc.taotaosou.com/transfer.htm?" + c.href),
                        c.ttsPicUrl = c.media,
                        c.ttsid = 0,
                        c.sourceId = "0",
                        c.promoPrice = c.price,
                        a.dataList.push(c)
                    }),
                    a.dataList.length >= 4 ? j.trigger("juxiao.tts.success", [{
                        recomList: a.dataList
                    }]) : a.getjx()
                },
                fail: function() {}
            })
        },
        getjx: function() {
            var a = this;
            e({
                url: f.juxiaoType(a.key, location.href, this.cateId),
                timeout: 1e4,
                done: function(b) {
                    i.statLog_one({
                        systemName: "ttk_recommend_api_pv_log",
                        cType: 4,
                        sPid: g.item.getID(),
                        cid: g.item.getCid(),
                        length: b.length
                    }),
                    d.each(b,
                    function(b, c) {
                        d.each(c,
                        function(b, c) {
                            0 !== b && (c.stat = 4, c.clickUrl = c.curl1, c.ttsPicUrl = c.timg, c.ttsid = 0, c.sourceId = "0", c.promoPrice = c.price, a.dataList.push(c))
                        })
                    }),
                    i.isJuzi && (h.isTBDetail || h.isTMDetail) ? j.trigger("juxiao.tts.success", [{
                        recomList: a.dataList
                    }]) : a.dataList.length >= 40 ? j.trigger("juxiao.tts.success", [{
                        recomList: a.dataList
                    }]) : a.getlds()
                },
                fail: function() {}
            })
        }
    };
    c.exports = {
        fetch: function(a, b) {
            k.init(a, b)
        }
    }
}),
__tk__define("models/lds", ["../lib/jquery", "./jsonp", "./api", "../product", "../utils", "../host", "../utils/env"],
function(a, b, c) {
    var d, e = a("../lib/jquery"),
    f = a("./jsonp"),
    g = a("./api"),
    h = a("../host"),
    i = a("../utils"),
    j = (a("../utils/env"), e("body")),
    k = a("../product"),
    l = {
        data: [],
        init: function(a, b) {
            this.cateType = a,
            this.cateId = b,
            d ? this.getlds() : this.getcps()
        },
        getlds: function() {
            var a = this;
            f({
                url: g.lds(),
                timeout: 1e4,
                done: function(b) {
                    i.statLog_one({
                        systemName: "ttk_recommend_api_pv_log",
                        cType: 3,
                        sPid: k.item.getID(),
                        cid: k.item.getCid(),
                        length: b.length
                    }),
                    "recomList" in b && e.each(b.recomList,
                    function(b, c, d) {
                        "mogujie" === c.website && d.unshift(d.splice(b, 1)[0]),
                        "0" === c.promoPrice && (c.promoPrice = c.price),
                        c.stat = 3,
                        a.data.push(c)
                    }),
                    d ? a.data.length >= 9 ? j.trigger("lds.sync.success", [{
                        recomList: a.data
                    }]) : a.getcps() : a.data.length >= 9 ? j.trigger("lds.sync.success", [{
                        recomList: a.data
                    }]) : a.getjx()
                },
                fail: function() {}
            })
        },
        getcps: function(a, b) {
            var c = this;
            f({
                url: g.cps(c.cateType, c.cateId),
                timeout: 1e4,
                done: function(a) {
                    i.statLog_one({
                        systemName: "ttk_recommend_api_pv_log",
                        cType: 1,
                        sPid: k.item.getID(),
                        cid: k.item.getCid(),
                        length: a.length
                    }),
                    void 0 === a[0] && (a = []),
                    a[0] && e.each(a,
                    function(a, b) {
                        b.href.match(/click.kc.taotaosou.com\/rc.do/) ? (b.stat = 1, b.clickUrl = b.href + "#tts_bj") : (b.stat = 2, b.clickUrl = "http://showkc.taotaosou.com/transfer.htm?" + b.href),
                        b.ttsPicUrl = b.media,
                        b.ttsid = 0,
                        b.sourceId = "0",
                        b.promoPrice = b.price,
                        c.data.push(b)
                    }),
                    d ? c.data.length >= 9 ? j.trigger("lds.sync.success", [{
                        recomList: c.data
                    }]) : c.getjx() : c.data.length >= 9 ? j.trigger("lds.sync.success", [{
                        recomList: c.data
                    }]) : c.getlds()
                },
                fail: function() {}
            })
        },
        getjx: function() {
            var a = this;
            f({
                url: g.juxiaoType(k.item.getTitle(), location.href, a.cateId),
                timeout: 1e4,
                done: function(b) {
                    i.statLog_one({
                        systemName: "ttk_recommend_api_pv_log",
                        cType: 4,
                        sPid: k.item.getID(),
                        cid: k.item.getCid(),
                        length: b.length
                    }),
                    b[0] && e.each(b,
                    function(b, c) {
                        e.each(c,
                        function(b, c) {
                            0 !== b && (c.clickUrl = c.curl1, c.ttsPicUrl = c.timg, c.title = c.pn, c.ttsid = 0, c.sourceId = "0", c.stat = 4, c.promoPrice = c.price, a.data.push(c))
                        })
                    }),
                    j.trigger("lds.sync.success", [{
                        recomList: a.data
                    }])
                },
                fail: function() {}
            })
        }
    },
    m = {
        dataList: [],
        init: function(a, b) {
            this.key = k.item.getTitle(),
            this.cateType = a,
            this.cateId = b,
            d ? this.getlds() : this.getcps()
        },
        getlds: function() {
            var a = this;
            f({
                url: g.lds(),
                timeout: 1e4,
                done: function(b) {
                    i.statLog_one({
                        systemName: "ttk_recommend_api_pv_log",
                        cType: 3,
                        sPid: k.item.getID(),
                        cid: k.item.getCid(),
                        length: b.length
                    }),
                    "recomList" in b && e.each(b.recomList,
                    function(b, c, d) {
                        "mogujie" === c.website && d.unshift(d.splice(b, 1)[0]),
                        "0" === c.promoPrice && (c.promoPrice = c.price),
                        c.stat = 3,
                        a.dataList.push(c)
                    }),
                    d ? a.dataList.length >= 9 ? j.trigger("lds.sync.success", [{
                        recomList: a.dataList
                    }]) : a.getcps() : a.dataList.length >= 9 ? j.trigger("lds.sync.success", [{
                        recomList: a.dataList
                    }]) : a.getjx()
                },
                fail: function() {}
            })
        },
        getcps: function() {
            var a = this;
            f({
                url: g.cps(a.cateType, a.cateId),
                timeout: 1e4,
                done: function(b) {
                    i.statLog_one({
                        systemName: "ttk_recommend_api_pv_log",
                        cType: 1,
                        sPid: k.item.getID(),
                        cid: k.item.getCid(),
                        length: b.length
                    }),
                    e.each(b,
                    function(b, c) {
                        c.href.match(/click.kc.taotaosou.com\/rc.do/) ? (c.stat = 1, c.clickUrl = c.href + "#tts_bj") : (c.stat = 2, c.clickUrl = "http://showkc.taotaosou.com/transfer.htm?" + c.href),
                        c.ttsPicUrl = c.media,
                        c.ttsid = 0,
                        c.sourceId = "0",
                        c.promoPrice = c.price,
                        a.dataList.push(c)
                    }),
                    d ? a.dataList.length >= 9 ? j.trigger("lds.sync.success", [{
                        recomList: a.dataList
                    }]) : a.getjx() : a.dataList.length >= 9 ? j.trigger("lds.sync.success", [{
                        recomList: a.dataList
                    }]) : a.getlds()
                },
                fail: function() {}
            })
        },
        getjx: function() {
            var a = this;
            f({
                url: g.juxiaoType(a.key, location.href, this.cateId),
                timeout: 1e4,
                done: function(b) {
                    i.statLog_one({
                        systemName: "ttk_recommend_api_pv_log",
                        cType: 4,
                        sPid: k.item.getID(),
                        cid: k.item.getCid(),
                        length: b.length
                    }),
                    e.each(b,
                    function(b, c) {
                        e.each(c,
                        function(b, c) {
                            0 !== b && (c.stat = 4, c.clickUrl = c.curl1, c.ttsPicUrl = c.timg, c.ttsid = 0, c.sourceId = "0", c.promoPrice = c.price, a.dataList.push(c))
                        })
                    }),
                    j.trigger("lds.sync.success", [{
                        recomList: a.dataList
                    }])
                },
                fail: function() {}
            })
        }
    };
    c.exports = {
        fetch: function(a, b) {
            d = window.tk_setting_all[41] && +window.tk_setting_all[41].s ? !0 : !1,
            h.isTBDetail || h.isTMDetail ? (i.isJuzi() || (d = !1), m.init(a, b)) : l.init(a, b)
        }
    }
}),
__tk__define("models/models", ["./taobao", "../lib/jquery", "../host", "./jsonp", "../utils", "../views/prefix", "../lib/underscore", "./api", "../product", "../utils/env", "./b2c", "./remind", "./lds", "./juxiao", "./tuan"],
function(a, b, c) {
    c.exports = {
        fetch: a("./taobao").fetch,
        reCom: a("./taobao").reCom,
        b2c: a("./b2c"),
        remind: a("./remind"),
        lds: a("./lds").fetch,
        juxiao: a("./juxiao").fetch,
        recomJuxiao: a("./juxiao").getJuxiao,
        tuan: a("./tuan")
    }
}),
__tk__define("models/remind", ["../lib/jquery", "./jsonp", "./api", "../product", "../utils", "../host", "../utils/env"],
function(a, b, c) {
    var d = a("../lib/jquery"),
    e = a("./jsonp"),
    f = a("./api"),
    g = a("../utils"),
    h = d("body");
    c.exports = {
        status: function(a) {
            e({
                url: f.remind.status(a),
                done: function(a) {
                    h.trigger("tk.remind.status", [a])
                }
            })
        },
        set: function(a) {
            e({
                url: f.remind.set(a),
                done: function(a) {
                    h.trigger("tk.remind.set", [a])
                }
            })
        },
        userStatus: function() {
            e({
                url: f.user.status(),
                done: function(a) {
                    if (a) {
                        var b;
                        0 === a.status ? (b = {
                            status: a.status,
                            id: "",
                            nick: ""
                        },
                        e({
                            url: "//uc.taotaosou.com/createtmpuser?tmpuserid=" + g.GUID + "&callback=?",
                            done: function(a) {
                                b.id = a.id,
                                b.tip = 0,
                                localStorage.setItem("TK-user-data", JSON.stringify(b))
                            }
                        })) : (b = {
                            status: a.status,
                            id: a.user.id,
                            nick: a.user.nick
                        },
                        localStorage.setItem("TK-user-data", JSON.stringify(b))),
                        h.trigger("user.status.get", [a])
                    }
                }
            })
        },
        getMessage: function(a) {
            e({
                url: f.remind.message(a),
                done: function(a) {
                    h.trigger("socket.message.get", [a])
                }
            })
        },
        read: function(a) {
            e({
                url: f.remind.read(a),
                done: function(a) {
                    h.trigger("socket.message.read", [a])
                }
            })
        }
    }
}),
__tk__define("models/taobao", ["../lib/jquery", "../host", "./jsonp", "../utils", "../views/prefix", "../lib/underscore", "./api", "../product", "../utils/env"],
function(a, b, c) {
    var d, e, f, g, h, i = a("../lib/jquery"),
    j = a("../host"),
    k = a("./jsonp"),
    l = a("../utils"),
    m = a("../views/prefix"),
    n = a("../lib/underscore"),
    o = a("./api"),
    p = a("../product"),
    q = i("body"),
    r = "//show.re.taobao.com/feature.htm?cb=?",
    s = {},
    t = [],
    u = 15,
    v = {
        taobao: "淘宝",
        tmall: "天猫",
        "jd.com": "京东",
        amazon: "亚马逊",
        yihaodian: "一号网",
        dangdang: "当当网",
        suning: "苏宁易购",
        yixun: "易迅",
        vip: "唯品会",
        wanggou: "QQ",
        vjia: "凡客V+",
        vancl: "凡客",
        moonbasa: "梦",
        coo8: "库",
        m18: "麦",
        xiu: "走",
        mbaobao: "卖",
        justyle: "justyle",
        hstyle: "韩",
        liebo: "裂",
        ochirly: "欧",
        "hg-daigou": "韩",
        htjz: "核",
        meilishuo: "美丽说",
        mogujie: "蘑菇街",
        gome: "国美在线",
        paipai: "拍拍网",
        jumei: "聚美优品",
        huawei: "华为",
        kaola: "网易考拉",
        beibei: "贝贝"
    },
    w = {
        taobao: "bijia-taobao",
        tmall: "bijia-tmall",
        "jd.com": "bijia-jd",
        amazon: "bijia-amazon",
        yihaodian: "bijia-yihaodian",
        dangdang: "bijia-dangdang",
        suning: "bijia-suning",
        yixun: "bijia-yixun",
        vip: "bijia-vip",
        wanggou: "bijia-wanggou",
        vjia: "bijia-vjia",
        vancl: "bijia-vancl",
        moonbasa: "bijia-moonbase",
        coo8: "bijia-coo8",
        m18: "bijia-m18",
        xiu: "bijia-xiu",
        mbaobao: "bijia-mbaobao",
        justyle: "bijia-justyle",
        hstyle: "bijia-hstyle",
        liebo: "bijia-liebo",
        ochirly: "bijia-ochirly",
        "hg-daigou": "bijia-hg-daigou",
        htjz: "bijia-htjz",
        meilishuo: "bijia-meilishuo",
        mogujie: "bijia-mogujie",
        gome: "bijia-gome",
        paipai: "bijia-paipai",
        jumei: "bijia-jumei",
        huawei: "bijia-huawei",
        kaola: "bijia-kaola"
    },
    x = {
        taobao: "淘",
        tmall: "天",
        "jd.com": "京",
        amazon: "亚",
        yihaodian: "壹",
        dangdang: "当",
        suning: "苏",
        yixun: "易",
        vip: "唯",
        wanggou: "QQ",
        vjia: "凡",
        vancl: "凡",
        moonbasa: "梦",
        coo8: "库",
        m18: "麦",
        xiu: "走",
        mbaobao: "卖",
        justyle: "justyle",
        hstyle: "韩",
        liebo: "裂",
        ochirly: "欧",
        "hg-daigou": "韩",
        htjz: "核",
        meilishuo: "美",
        mogujie: "蘑",
        gome: "国",
        paipai: "拍",
        jumei: "聚",
        huawei: "华",
        kaola: "考",
        beibei: "贝"
    },
    y = function(a) {
        k({
            url: o.taobao(a),
            done: function(a) {
                function b() {
                    n.each(a.dividedList,
                    function(a, b) {
                        a.webSiteTitle = v[a.website],
                        a.webSiteLogo = w[a.website],
                        6 > b ? a.isshow = !0 : a.isshow = !1,
                        a.clickUrl = a.list[0].clickUrl,
                        a.more = l.getUndertakePage(t) + "&utm_source=" + l.site() + "_more" + e + "&price=" + encodeURIComponent(p.item.getPrice()) + "&sales=" + p.item.getSum() + "&site=" + a.website,
                        n.each(a.list,
                        function(a, b) {
                            b > 3 ? a.isshow = !1 : a.ishow = !0,
                            0 === b && (a.minPrice = !0)
                        })
                    })
                }
                function c(b, c) {
                    var e = "_tuijian";
                    Math.floor(100 * Math.random());
                    "same" === c && (e = "_bijia");
                    n.each(b,
                    function(b, c) {
                        return "webSite" in b && b.webSite && (b.webSitequan = v[b.webSite], b.webSiteTitle = x[b.webSite], "shopType" in b && ("taobao" === b.webSite || "tmall" === b.webSite ? b.shopOwner = !1 : b.shopOwner = !0), b.webSite.match(/taobao|tmall/) ? g += b.sourceId + ",": "jd.com" === b.webSite && (b.webSite = "jd", b.sales <= 0 && (b.sales = !1), b.com = b.feedbackCount)),
                        b.promoPrice.toString().length >= 7 ? void(b.promoPrice.toString().match(/./) && (b.promoPrice = b.promoPrice.toString().replace(/\..{2}/, ""))) : (b.index = c, a.mType && (b.mType = a.mType), location.host.match(/paipai/) && (b.picUrl = b.ttsPicUrl), void(n.isArray(b.tag) && (n.each(b.tag,
                        function(a, c) {
                            "省钱" === a && (b.tag[c] = "price"),
                            "热销" === a && (b.tag[c] = "sum"),
                            "信誉" === a && (b.tag[c] = "credit")
                        }), "0" === b.commissionNum && (b.tag = n.without(b.tag, "sum")))))
                    }),
                    "same" === c && (d = n.min(b,
                    function(a) {
                        return parseFloat(a.promoPrice)
                    }), parseInt(d.promoPrice.replace(/\./, ""), 10) < parseInt(f, 10) && (d.isMin = !0))
                }
                var d, e = "",
                f = p.item.getPrice();
                a.isTtsCategory && "undefined" != typeof a.sex && (e += "&sex=" + a.sex);
                var g = "",
                h = !1,
                o = "",
                s = !1;
                a.similarList[0] && (h = !0),
                j.isMLSList || j.isMGJList ? h === !1 && 0 === a.sameList.length && (s = !0) : 0 === a.sameList.length && 0 === a.similarList.length && (s = !0);
                var t = {
                    id: a.itemId,
                    title: p.item.getTitle(),
                    href: p.item.getHref(),
                    img: a.picUrl
                };
                n.extend(a, {
                    app: m.app,
                    noFound: !1,
                    more: l.getUndertakePage(t) + "&utm_source=" + l.site() + "_more" + e + "&price=" + encodeURIComponent(p.item.getPrice()) + "&sales=" + p.item.getSum()
                }),
                a.issale = !0,
                p.item.getPrice() || (a.issale = !1),
                a.isshowmore = !0,
                3 === a.cateType && a.dividedList && a.dividedList[0] ? (a.issame = !0, a.issimilar = !1, b()) : a.sameList[0] ? (a.issame = !0, a.issimilar = !1, c(a.sameList, "same"), o = a.sameList[0].dimension) : a.similarList[0] ? (a.issimilar = !0, a.issame = !1, c(a.similarList, "similar"), o = a.similarList[0].dimension) : a.isshowmore = !1,
                a.dimension = o,
                3 === a.cateType && a.dividedList && a.dividedList[0] ? (q.trigger("tts.data.not.change", []), q.trigger("tk.sync.success", [a])) : "" !== g ? k({
                    url: r,
                    data: {
                        auction_ids: g,
                        feature_names: "feedbackCount,promoPrice",
                        from: "taobao_search"
                    },
                    done: function() {
                        k({
                            url: r,
                            data: {
                                auction_ids: g,
                                feature_names: "feedbackCount,promoPrice",
                                from: "taobao_search"
                            },
                            done: function(b) {
                                function c(a, b, c) {
                                    b = parseInt(b, 10);
                                    var d = !1;
                                    return i.each(a,
                                    function(a, c) {
                                        parseInt(c.auction_id, 10) === b && "" !== c.promoPrice && (d = c.promoPrice > 1e3 ? parseInt(c.promoPrice, 10) : c.promoPrice)
                                    }),
                                    d
                                }
                                function d(a, b) {
                                    b = parseInt(b, 10);
                                    var c = !1;
                                    return i.each(a,
                                    function(a, d) {
                                        parseInt(d.auction_id, 10) === b && (c = d.feedbackCount)
                                    }),
                                    c
                                }
                                function e(a, e) {
                                    if (i.each(a,
                                    function(a, e) {
                                        f = c(b, e.sourceId, e.price),
                                        h = d(b, e.sourceId),
                                        "undefined" != typeof e.isMin && e.isMin && (e.isMin = !1),
                                        f && (k = !0, f < e.price ? e.oriPrice = e.price: delete e.oriPrice, e.promoPrice = f),
                                        e.tag && (e.tag = n.without(e.tag, "price"), "0" === e.commissionNum && (e.tag = n.without(e.tag, "sum"))),
                                        h && "0" !== h && (m = !0, e.com = h)
                                    }), "same" === e) {
                                        var j = p.item.getPrice();
                                        g = n.min(a,
                                        function(a) {
                                            return parseFloat(a.promoPrice)
                                        }),
                                        parseInt(g.promoPrice.replace(/\./, ""), 10) < parseInt(j, 10) && (g.isMin = !0)
                                    }
                                    return a
                                }
                                var f, g, h, k = !1,
                                m = !1;
                                a.sameList[0] && (a.sameList = e(a.sameList, "same"), (j.isTBList || j.isTMList) && l.ttkCollect(a.sameList)),
                                a.similarList[0] && (a.similarList = e(a.similarList, "similar"), (j.isTBList || j.isTMList) && l.ttkCollect(a.similarList)),
                                q.trigger("tk.sync.success", [a])
                            }
                        })
                    }
                }) : q.trigger("tk.sync.success", [a])
            },
            fail: function() {
                q.trigger("tk.sync.fail", ["不妙！高峰期遭遇堵车，请稍后再试。"])
            }
        })
    },
    z = function() {
        k({
            url: o.juxiaoPerson(d, e),
            done: function(a) {
                a[0] && (l.statLog_one({
                    systemName: "ttk_recommend_api_pv_log",
                    cType: 4,
                    sPid: "",
                    cid: "",
                    length: a.length
                }), a[0][0] ? i.each(a,
                function(a, b) {
                    b[1].clickUrl = b[1].curl1,
                    b[1].ttsPicUrl = b[1].timg,
                    b[1].title = b[1].pn,
                    b[1].ttsid = 0,
                    b[1].promoPrice = b[1].price,
                    t.push(b[1])
                }) : (a = a.slice(1), i.each(a,
                function(a, b) {
                    b.clickUrl = b.curl1,
                    b.ttsPicUrl = b.timg,
                    b.title = b.pn,
                    b.ttsid = 0,
                    b.promoPrice = b.price,
                    t.push(b)
                }))),
                t.length < u ? (i.each(g.proList,
                function(a, b) {
                    t.push(b)
                }), h.proList = t, q.trigger("tk.recom.success", [h])) : (h.proList = t, q.trigger("tk.recom.success", [h]))
            },
            fail: function() {
                i.each(g.proList,
                function(a, b) {
                    t.push(b)
                }),
                h.proList = t,
                q.trigger("tk.recom.success", [h])
            }
        })
    },
    A = {
        isTbTm: function() {
            var a = this;
            k({
                url: o.tbtmcps(d, "", f),
                done: function(b) {
                    l.statLog_one({
                        systemName: "ttk_recommend_api_pv_log",
                        cType: 1,
                        sPid: "",
                        cid: f,
                        length: b.length
                    }),
                    a.doneData(!0, b)
                },
                fail: function() {
                    a.doneData(!1, [])
                }
            })
        },
        notTbTm: function() {
            var a = this;
            k({
                url: o.ads(d),
                done: function(b) {
                    a.doneData(!0, b)
                },
                fail: function() {
                    a.doneData(!1, [])
                }
            })
        },
        doneData: function(a, b) {
            a ? (i.each(b,
            function(a, b) {
                b.clickUrl = b.href,
                b.ttsPicUrl = b.media,
                b.title = b.title,
                b.ttsid = b.sourceId,
                b.promoPrice = b.price,
                t.push(b)
            }), t.length < u ? (i.each(g.proList,
            function(a, b) {
                t.push(b)
            }), h.proList = t, q.trigger("tk.recom.success", [h])) : (h.proList = t, q.trigger("tk.recom.success", [h]))) : (i.each(g.proList,
            function(a, b) {
                t.push(b)
            }), h.proList = t, q.trigger("tk.recom.success", [h]))
        }
    },
    B = function() {
        k({
            url: o.reCom(),
            data: s,
            done: function(a) {
                return a && "proList" in a && a.proList[0] ? (d = a.keyword, e = a.proList[0].clickUrl, f = a.proList[0].productCategoryCode, j.isTMList || j.isTBList || j.isB2CList ? (a.list = "http://search.taotaosou.com/search/text?keyword=" + encodeURIComponent(a.keyword), a.host = "TTS-list TTS-same-home") : (a.list = !1, a.host = "TTS-list TTS-home"), i.each(a.proList,
                function(a, b) {
                    "jd.com" === b.webSite && (b.webSite = "jd"),
                    b.ttsPicUrl = b.ttsPicUrl.replace(/gi.+mlist/, "img")
                }), h = g = a, void(j.isHomeTaobao || j.isHomeTmall || j.isHomeJD || j.isHomeMGJ || j.isHomeMLS || j.isHomeVIP || j.isHomeSuning || j.isYHDHome || j.isHomeJiuxian || j.isHomeJumei || j.isHomeDD || j.isHomeAMX || j.isHomeZhe800 || j.isHomeNuomi || j.isHomePaipai || j.isHomeMeituan ? z() : j.isTBList || j.isTMList ? A.isTbTm() : A.notTbTm())) : !1
            },
            fail: function() {
                q.trigger("tk.recom.fail", ["不妙！高峰期遭遇堵车，请稍后再试。"])
            }
        })
    };
    c.exports = {
        fetch: function(a) {
            y(a)
        },
        reCom: function() {
            B()
        }
    }
}),
__tk__define("models/tuan", ["../lib/jquery", "../lib/underscore", "./api", "../product", "../utils", "../host", "../utils/env"],
function(a, b, c) {
    var d = a("../lib/jquery"),
    e = a("../lib/underscore"),
    f = a("./api"),
    g = a("../utils");
    c.exports = {
        init: function() {
            d.ajax({
                url: f.tuan(),
                cache: !1,
                dataType: "jsonp",
                jsonp: "callback"
            }).done(function(a) {
                a.more = "//www.chaoji99.com/?utm_medium=ttk&utm_source=" + g.site() + "_tuan",
                e.each(a.recomList,
                function(a) {
                    a.clickUrl += "?utm_medium=ttk&utm_source=" + g.site() + "_tuan"
                }),
                d("body").trigger("tuan.sync.success", [a])
            })
        }
    }
}),
__tk__define("mustache_helpers", ["./lib/handlebars"],
function(a, b, c) {
    var d, e = a("./lib/handlebars"),
    f = {
        taobao: "淘宝",
        tmall: "天猫",
        jd: "京东",
        "jd.com": "京东",
        amazon: "亚马逊",
        yihaodian: "1号店",
        dangdang: "当当网",
        suning: "苏宁易购",
        yixun: "易迅",
        vip: "唯品会",
        wanggou: "QQ网购",
        vjia: "凡客V+",
        vancl: "凡客诚品",
        moonbasa: "梦芭莎",
        coo8: "库巴",
        m18: "麦考林",
        xiu: "走秀",
        mbaobao: "卖包包",
        justyle: "justyle",
        hstyle: "韩都衣舍",
        liebo: "裂帛",
        ochirly: "欧时力官网",
        "hg-daigou": "韩购社官网",
        htjz: "核桃夹子",
        meilishuo: "美丽说",
        mogujie: "蘑菇街",
        gome: "国美在线",
        paipai: "拍拍"
    },
    g = {
        taobao: "淘",
        tmall: "天",
        jd: "京",
        "jd.com": "京",
        amazon: "亚",
        yihaodian: "壹",
        dangdang: "当",
        suning: "苏",
        yixun: "易",
        vip: "唯",
        wanggou: "QQ",
        vjia: "凡",
        vancl: "凡",
        moonbasa: "梦",
        coo8: "库",
        m18: "麦",
        xiu: "走",
        mbaobao: "卖",
        justyle: "justyle",
        hstyle: "韩",
        liebo: "裂",
        ochirly: "欧",
        "hg-daigou": "韩",
        htjz: "核",
        meilishuo: "美",
        mogujie: "蘑",
        gome: "国",
        paipai: "拍"
    },
    h = {
        contains: function(a, b, c) {
            return - 1 !== a.indexOf(b) ? c.fn(this) : c.inverse(this)
        },
        and: function(a, b, c) {
            return a && b ? c.fn(this) : c.inverse(this)
        },
        gt: function(a, b, c) {
            return a > b ? c.fn(this) : c.inverse(this)
        },
        gte: function(a, b, c) {
            return a >= b ? c.fn(this) : c.inverse(this)
        },
        is: function(a, b, c) {
            return a === b ? c.fn(this) : c.inverse(this)
        },
        isnt: function(a, b, c) {
            return a !== b ? c.fn(this) : c.inverse(this)
        },
        lt: function(a, b, c) {
            return b > a ? c.fn(this) : c.inverse(this)
        },
        from: function(a) {
            var b = ["淘宝", "天猫"];
            return b[a]
        },
        lte: function(a, b, c) {
            return b >= a ? c.fn(this) : c.inverse(this)
        },
        lengthLt: function(a, b, c) {
            var d = a.length;
            return d > b ? c.fn(this) : c.inverse(this)
        },
        pingurl1: function(a, b) {
            return "http://www.chaoji99.com/index.html?day=" + a + "&hour=" + b + "&utm_source=bottomtab_seckill&utm_medium=ttk#gouwu"
        },
        pingurl2: function(a, b) {
            return "http://www.chaoji99.com/index.html?day=" + a + "&hour=" + b + "&utm_source=bottomtab_seckill&utm_medium=ttk#gouwu"
        },
        pingurl3: function(a, b) {
            return "http://www.chaoji99.com/index.html?day=" + a + "&hour=" + b + "&utm_source=bottomtab_seckill&utm_medium=ttk#gouwu"
        },
        imgCDN: function(a, b, c) {
            return c + "_" + a + "x" + b + ".jpg"
        },
        or: function(a, b, c) {
            return a || b ? c.fn(this) : c.inverse(this)
        },
        th: function(a, b) {
            return a.length > b ? a.slice(0, b) + "...": a
        },
        getprice: function(a) {
            return (a / 100).toFixed(2)
        },
        setsize: function(a, b) {
            return 220 * b / a
        },
        imgreplace: function(a) {
            return a.replace("_210x210.jpg", "")
        },
        setIndex: function(a) {
            this.index = Number(a + 1)
        },
        getpageparam: function(a, b) {
            return a + 1 + 30 * (b - 1)
        },
        source: function(a) {
            return f[a]
        },
        sourceShort: function(a) {
            return g[a]
        },
        jdName: function(a) {
            return "jd.com" === a ? "jdcom": a
        },
        ifAny: function() {
            for (var a = arguments.length - 2,
            b = arguments[a + 1], c = !0, d = 0; a > d;) {
                if (!arguments[d]) {
                    c = !1;
                    break
                }
                d += 1
            }
            return c ? b.fn(this) : b.inverse(this)
        },
        rowLast: function(a, b, c) {
            return a % b === 0 ? c.fn(this) : c.inverse(this)
        }
    };
    for (d in h) h.hasOwnProperty(d) && e.registerHelper(d, h[d]);
    return e.registerHelper("math",
    function(a, b, c, d) {
        return a = parseFloat(a),
        c = parseFloat(c),
        {
            "+": a + c,
            "-": a - c,
            "*": a * c,
            "/": a / c,
            "%": a % c
        } [b]
    }),
    e
}),
__tk__define("newbie", ["./lib/jquery", "./utils", "./host", "./models/jsonp"],
function(a, b, c) {
    function d() {
        var a, b, c = '<div id="J_newbie" class="tts_wrap"> <div class="tts_mask"></div> <div class="tts_mask_header"><div class="tts_mask_banner"><a href="http://tk.taotaosou.com/market/style/" target="_blank"><img src="//exts.taotaosou.com/browser-static/taobao/newbie/n_ban_01.jpg"></a></div></div> <div class="tts_btn_float"></div> <div class="tts_mask_none"></div> <div class="tts_box_fb"> <div class="tts_box_float"></div> <a href="javascript:;" class="tts_go_btn">立刻体验</a> <a href="http://tk.taotaosou.com/market/style/" class="tts_go_style" title="玩爆小时代,我的style!" target="_blank">去抽奖</a> </div> </div>',
        d = g("#TK-con");
        g(c).appendTo("body"),
        g(".tts_go_style").on("click",
        function(a) {
            a.preventDefault(),
            i.stat("rukou_clk"),
            window.open(g(this).attr("href"))
        }),
        a = d.offset().left + 8,
        b = d.offset().top;
        var j = "left:" + a + "px;top:" + b + "px;position:absolute!important",
        k = g("#J_newbie"),
        l = g(".tts_box_fb");
        l.css({
            left: a,
            top: b - 137
        }),
        d.clone().attr("style", j).appendTo(k),
        h.css({
            overflowY: "hidden"
        }),
        i.stat("ttk_dnok_PV"),
        e(),
        f(k)
    }
    function e() {
        var a = g("#TK-button"),
        b = g(".tts_btn_float"),
        c = parseInt(a.css("left"), 10) - 47,
        d = parseInt(a.css("top"), 10) - 340;
        b.css({
            left: c,
            top: d
        })
    }
    function f(a) {
        var b = g(".tts_go_btn");
        b.on("click",
        function() {
            a.hide(),
            h.css({
                overflowY: "scroll"
            }),
            i.stat("ttk_dnok_useclk")
        })
    }
    var g = a("./lib/jquery"),
    h = g("body"),
    i = a("./utils"),
    j = a("./models/jsonp"),
    k = window.location.href;
    k.match(/key_newbie=/) ? d() : j({
        url: "http://log.taotaosou.com/getCookieByKey.do?callback=?",
        done: function(a) {
            return "null" !== a ? !1 : void d()
        }
    }),
    c.exports = {
        init: d
    }
}),
__tk__define("pricestat", ["./lib/jquery", "./utils", "./host"],
function(a, b, c) {
    function d(a) {
        return a ? ("number" == typeof a && (a = a.toString()), a.replace(/\./, "")) : void 0
    }
    var e = document.referrer;
    if (!e.match(/key_price=/)) return ! 1;
    var f = a("./lib/jquery"),
    g = {
        utils: a("./utils"),
        host: a("./host")
    },
    h = f("body");
    h.on({
        "tkstat.price.status": function(a, b) {
            g.utils.statLog({
                systemName: "ttk_price_stat",
                pid: b.pid,
                spid: b.spid,
                ds_price: b.ds_price,
                lf_price: b.lf_price,
                dp_price: b.dp_price,
                vcat: b.vcat,
                onstore: b.onstore
            })
        }
    });
    var i = {
        proId: function() {
            var a = "";
            return g.utils.sliceID(e) && (a = g.utils.sliceID(e)),
            a
        },
        dp_price: function() {
            var a = "";
            return window.TB && window.TB.PromoData && window.TB.PromoData.def && window.TB.PromoData.def[0] && window.TB.PromoData.def[0].price && (a = d(window.TB.PromoData.def[0].price)),
            g.host.isTMDetail && window.KISSY && (window.KISSY._TMD_Config && window.KISSY._TMD_Config.itemDO && window.KISSY._TMD_Config.itemDO.reservePrice && (a = d(window.KISSY._TMD_Config.itemDO.reservePrice)), window.KISSY.use("malldetail/model/product",
            function(b, c) {
                c.onChange("currentPromotionList",
                function(b) {
                    b && (a = d(b[0].price))
                })
            })),
            a && a.toString().match(/\./) && (a = d(a)),
            a.replace(/[^\x00-\xff]*/g, "").replace(/¥/g, "")
        },
        ds_price: function() {
            var a = "",
            b = f("#J_itemViewed")[0] ? f("#J_itemViewed").data("value") : "";
            return "object" == typeof b && b.price ? a = b.price: f("#J_StrPrice").text() && (a = f("#J_StrPrice").text().replace(/-.+/, "")),
            a && a.toString().match(/\./) && (a = d(a)),
            a.replace(/[^\x00-\xff]*/g, "").replace(/¥/g, "")
        },
        onstore: function() {
            var a = "1";
            return f(".J_TOffSale ")[0] ? a = "0": document.getElementById("J_Sold-out-recommend") ? a = "0": document.getElementById("J_ImgBooth") || (a = "0"),
            a
        }
    },
    j = e.replace(/.+key_price=/, "").split(/\+/),
    k = j[0],
    l = j[1],
    m = j[2];
    k.match(/\./) ? k = k.replace(/\./, "") : k += "00";
    var n = {
        pid: i.proId(),
        lf_price: k,
        ds_price: i.ds_price(),
        dp_price: i.dp_price(),
        onstore: i.onstore(),
        vcat: l,
        spid: m
    };
    h.trigger("tkstat.price.status", [n]),
    c.exports.priceStat = i
}),
__tk__define("product", ["./lib/jquery", "./utils", "./host"],
function(a) {
    function b(a) {
        var b = g.host.isDetail,
        c = f(".col.item")[0] && f(a).parents(".col.item")[0] || f("#mainsrp-itemlist")[0] && f(a).parents(".item")[0],
        d = f(".item-box")[0] && f(a).parents(".item-box")[0],
        e = f(".row.icon-datalink")[0] && f(a).parents(".row.icon-datalink"),
        h = g.host.isMLSList && f(a).parents(".np_pic.hover_pic"),
        i = g.host.isMGJList && f(a).parent().parent(),
        j = g.host.isMGJDetail || g.host.isMLSDetail,
        k = g.host.isB2CDetail,
        l = g.host.isB2CList;
        if (this.target = a, b || k || l || g.host.isYHDDetail || g.host.isYHDList || g.host.isAMXDetail || g.host.isVjiaDetial || g.host.isVjiaList || g.host.isDDList || g.host.isDDDetail || g.host.isGMDetail || g.host.isAMXList || g.host.isSuningDetail || g.host.isSuningList || g.host.isVanclDetail || g.host.isVipDetail || g.host.isVipList ? this.box = f(a) : f(a).closest(".pic") || g.host.isVanclList ? this.box = f(a) : c ? this.box = f(a).parents(".item") : d ? this.box = f(a).parents(".item-box") : e ? this.box = f(a).parents(".row.icon-datalink") : h ? this.box = f(a).parents(".np_pic.hover_pic") : i ? this.box = f(a).parent().parent() : j ? this.box = f(a) : f(".col")[0] && f(a).parents(".photo") ? this.box = f(a) : this.box = f(a).parents("li").length > 0 ? f(a).parents("li") : f(a).parents(".product"), !this.box[0]) throw new Error("not find imgBox; disable!")
    }
    var c = window.location,
    d = c.href,
    e = c.host,
    f = a("./lib/jquery"),
    g = {
        utils: a("./utils"),
        host: a("./host")
    };
    return b.item = {},
    b.isTBID = !1,
    b.prototype = {
        getID: function() {
            var a, b = this.target,
            h = f(b).parents("a"),
            i = h.attr("href"),
            j = "";
            if (g.host.isB2CDetail) j = c.href.match(/re\.jd\.com/) ? c.href.match(/[0-9]+/)[0] : window.pageConfig.product.skuid.toString();
            else if (g.host.isB2CList || g.host.isVjiaList || g.host.isSuningList || g.host.isJDSub) i.match(/[0-9].*\./) && (j = i.match(/[0-9].*\./)[0].slice(0, -1));
            else if (g.host.isDDList) j = i.match(/[0-9]+/)[0];
            else if (g.host.isYHDList) i.match(/item\/[0-9]{5,9}/) && (j = i.match(/item\/([0-9]{5,9})/)[1]);
            else if (g.host.isVipDetail) c.href.match(/[0-9]+-[0-9]+/) && (j = c.href.match(/[0-9]+-([0-9]+)/)[1]);
            else if (g.host.isVipList) i.match(/[0-9]+-[0-9]+/) ? j = i.match(/[0-9]+-([0-9]+)/)[1] : i.match(/[0-9]+/) && (j = i.match(/[0-9]+/)[0]);
            else if (g.host.isJumeiList) {
                if (j = f(b).parents("li").find(".addcart_btn span").attr("data-hashid"), c.href.match(/search\.jumei\.com/) && (a = i.match(/(ht|d)[0-9]([0-9a-z]+)/))) return a[0];
                j || (j = i.match(/[0-9]+/))
            } else if (g.host.isGMDetail) j = c.href.match(/product\/(.+)-/) ? c.href.match(/product\/(.+)-/)[1] : d.match(/[A-Z]{0,1}[0-9]+/)[0];
            else if (g.host.isGMList) j = i.match(/product\/(.+)-/) ? i.match(/product\/(.+)-/)[1] : i.match(/item.gome.com.cn\/(.+)-/)[1];
            else if (g.host.isAMXDetail) c.href.match(/http:\/\/www.amazon.cn\/.*?\/dp\/(\w+)/) ? j = c.href.match(/http:\/\/www.amazon.cn\/.*?\/dp\/(\w+)/)[1] : c.href.match(/http:\/\/www.amazon.cn\/dp\/(\w+)\/.*?/) ? j = c.href.match(/http:\/\/www.amazon.cn\/dp\/(\w+)\/.*?/)[1] : /www.amazon.cn\/gp\/product\/(\w+)/.test(c.href) ? j = c.href.match(/www.amazon.cn\/gp\/product\/(\w+)/)[1] : c.href.match(/qid/) ? document.getElementById("ASIN") ? j = f("#ASIN").val() : document.getElementById("mbc") && (j = f("#mbc").val()) : c.href.match(/\/dp\//) ? document.getElementById("ASIN") ? j = f("#ASIN").val() : document.getElementById("mbc") && (j = f("#mbc").val()) : j = c.href.match(/http:\/\/www.amazon.cn\/.*?\/product\/(\w+)\/.*?/)[1];
            else if (g.host.isAMXList)/(\/dp\/|\/gp\/product)/.test(this.box.parents("a").attr("href")) ? j = this.box.parents("li").attr("data-asin") : this.box.parents(".prod")[0] ? j = this.box.parents(".prod").attr("name") : this.box.parents(".s-result-item")[0] ? j = this.box.parents(".s-result-item").data().asin: this.box.parents("div[data-asin]") && (j = this.box.parents("div[data-asin]").data("asin"));
            else if (g.host.isHomeAMX) {
                if (a = i.match(/(\/dp|\/gp\/product)\/([A-Z0-9]+)/)) return a[2]
            } else if (g.host.isPaipaiDetail) j = c.href.match(/[0-9]+d[0-9]+/);
            else if (g.host.isPaipaiList) j = f(b).parents(".goods_infoimgWrap").attr("data-href").match(/[0-9]+d[0-9]+/);
            else if (g.host.isYixunDetail) c.pathname.match(/item-([0-9].*)\./)[1] && (j = c.pathname.match(/item-([0-9].*)\./)[1]);
            else if (g.host.isYixunList) i.match(/item-([0-9].*)\./)[1] && (j = i.match(/item-([0-9].*)\./)[1]);
            else if (g.host.isYHDDetail) c.pathname.split(/\//)[2] && (j = c.pathname.split(/\//)[2]);
            else if (g.host.isVjiaDetial || g.host.isSuningDetail || g.host.isVanclDetail || g.host.isJumeiDetail) j = d.match(/[0-9][^\/]*?\./)[0].slice(0, -1).split("-")[0],
            j || (j = i.match(/[0-9]+/));
            else if (g.host.isDDDetail) j = d.match(/[0-9]+/)[0];
            else if (g.host.isVanclList) j = i.match(/[0-9].*\./)[0].slice(0, -1);
            else if (this.box.attr("nid")) j = this.box.attr("nid");
            else if (g.host.isTBList) j = h[0] && h.attr("stat") ? h.attr("stat").split("|")[0].split("-")[1] : g.utils.sliceID(i) ? g.utils.sliceID(i) : f(b).parents(".item").attr("nid") ? f(b).parents(".item").attr("nid") : "",
            "" === j && (j = f(b).parents("a").attr("data-nid"));
            else if (g.host.isTBDetail) j = g.utils.sliceID(d);
            else if (g.host.isJuDetail) j = g.utils.sliceID(i);
            else if (i && e === g.host.tbList || g.host.isTBFav) j = g.utils.sliceID(i);
            else if (g.host.isTMList || g.host.isTMDetail || g.host.isTMSubList || g.host.isTBSub) {
                var k;
                if (a = i.match(/&(itemid|item_id)=([0-9]+)/), i && g.host.isTMList || g.host.isTMSubList || g.host.isTBSub) if (i.match(/mallstItemId/)) k = i.indexOf("mallstItemId=") + 13;
                else {
                    if (!i.match(/default_item_id/)) return a ? a[2] : (a = i.match(/(&id|\?id)=([0-9]+)/), a ? a[2] : null);
                    k = i.indexOf("default_item_id=") + 16
                } else g.host.isTMDetail && (d.match(/default_item_id/) ? j = d.slice(d.indexOf("default_item_id=") + 16, d.length) : d.match(/mallstItemId/) ? (k = d.indexOf("mallstItemId=") + 11, j = g.utils.sliceID(d.slice(k, d.indexOf("&", k)))) : j = g.utils.sliceID(d))
            } else if ((g.host.isTBShop || g.host.isTMShop) && g.utils.sliceID(i)) j = g.utils.sliceID(i);
            else if (g.host.isMLSList) try {
                j = g.utils.sliceID(decodeURIComponent(i)) ? g.utils.sliceID(decodeURIComponent(i)) : i.match(/[0-9]{10}/)
            } catch(l) {
                j = i.match(/[0-9]{10}/)
            } else if (g.host.isMGJList) j = i.match(/[0-9].*\?/) ? i.match(/[0-9].*\?/)[0].slice(0, -1) : g.utils.getUrlParam(i, "i");
            else if (g.host.isMGJDetail || g.host.isMLSDetail) {
                var m = window.location.pathname,
                n = m.split("/"),
                o = n.length;
                j = n[o - 1]
            } else g.host.isLeFengList ? j = i.match(/[0-9]{8}/) : g.host.isLeFengBrand ? j = i.match(/[0-9]{8}/) : g.host.isLeFengDeatil ? j = c.href.match(/[0-9]{8}/) : g.host.isKaoLaList ? j = i.match(/[0-9]{6}|[0-9]{5}/) : g.host.isKaoLaDetail ? j = c.href.match(/[0-9]{6}|[0-9]{5}/) : g.host.isBeiBeiList ? j = c.href.match(/you\.beibei\.com/) || c.href.match(/you\.beibei\.com\/index/) ? f(b).parents("li").attr("c-etl") : c.href.match(/diaper/) ? i.match(/[0-9]{9}-[0-9]{6}/) : f(h).attr("c-etl") : g.host.isFengQu ? j = i.match(/[0-9]{4}/) : g.host.isFengQuDetail ? j = c.href.match(/[0-9]{4}/) : g.host.isMiaDetail ? j = c.href.match(/[0-9]{7}/) : g.host.isMia ? j = i.match(/[0-9]{7}/) : g.host.isStrawberrynetDetail ? j = c.href.match(/[0-9]{6}/) : g.host.isStrawberrynet ? j = i.match(/[0-9]{6}/) : g.host.isYmatouDetail ? j = c.href.replace("http://www.ymatou.com/product/", "").replace(".html", "") : (g.host.isYmatou || g.host.isYmatouList) && i.match(/product|Product/) && (j = i.replace("http://www.ymatou.com/Product/", "").replace("http://www.ymatou.com/product/", "").replace(".html", ""));
            return g.host.isBeiBeiDetail && (j = f("#detail-meta").attr("c-etl")),
            g.host.isB2CList && (i.match(/[0-9].*\./) ? j = i.match(/[0-9].*\./)[0].slice(0, -1) : f(b).parents("li").attr("data-sku") ? j = f(b).parents("li").attr("data-sku") : f(b).parents("li").find(".p-price i")[0] ? j = f(b).parents("li").find(".p-price i").attr("class").match(/[0-9]+/)[0] : f(b).parents("li").find(".p-price span")[0] && (j = f(b).parents("li").find(".p-price span").attr("class").match(/[0-9]+/)[0])),
            void 0 === j && (j = ""),
            j
        },
        isTBID: function() {
            var a = this.target,
            b = f(a).parents("a"),
            c = b.attr("href"),
            d = !1;
            if (g.host.isMLSList) try {
                g.utils.sliceID(decodeURIComponent(c)) && (d = !0)
            } catch(e) {
                d = !1
            }
            return d
        },
        getTitle: function() {
            var a = this.target,
            b = document.title,
            h = "",
            i = a.parentNode && a.parentNode.title,
            j = (e === g.host.tbListS || "search.taobao.com" === e || "s8.taobao.com" === e) && this.box.find(".summary a").text(),
            k = e === g.host.tbList && this.box.find(".title").text(),
            l = e === g.host.tbSearch1 && this.box.find(".J_ItemDesc").data("item-desc");
            return g.host.isYHDDetail ? h = f("#productMainName").attr("title") : g.host.isSuningList ? h = this.box.closest(".item")[0] ? this.box.closest(".item").find(".i-name").text() : a.alt: g.host.isMGJDetail ? f(".goods-title")[0] ? h = f(".goods-title").text() : f(".shop_link")[0] ? h = f(".shop_link")[0].title: f("#itemimg")[0] && (h = f("#itemimg")[0].title) : g.host.isAMXList ? this.box.parents(".prod")[0] ? h = this.box.parents(".prod").find(".newaps").text() : this.box.parents(".s-result-item")[0] && (h = this.box.parents(".s-result-item").find(".s-access-title").text()) : g.host.isYHDList ? a.title ? h = a.title: a.alt ? h = a.alt: f(a).parent().hasClass("search_prod_img") ? h = f(a).parents(".search_item_box").find(".title").text() : f(a).parent().hasClass("pro_img_big") ? h = f(a.parentNode.parentNode).find(".name").text() : f(a).parent().hasClass("search_prod_img") ? h = a.parentNode.title: f(a).parents(".itemBox")[0] && (h = f(a).parents(".itemBox").find(".proName a")[0].title) : g.host.isSuningDetail ? h = document.getElementById("itemDisplayName") ? f("#itemDisplayName").text() : f("#productDisplayName").text() : g.host.isPaipaiDetail || g.host.isJuDetail ? h = document.title: g.host.isB2CDetail ? h = f("#name h1")[0] ? f("#name h1").text() : f(".shop_intro")[0] ? f(".shop_intro a").html() : this.target.alt: g.host.isB2CList ? a.alt ? h = a.alt: f(a.parentNode.parentNode.parentNode).find(".p-name")[0] ? h = f(a.parentNode.parentNode.parentNode).find(".p-name").text().replace(i, "") : f(a.parentNode.parentNode.parentNode).find(".rate")[0] && (h = f(a.parentNode.parentNode.parentNode).find(".rate").text().replace(i, "")) : g.host.isVanclDetail ? a.title && (h = a.title) : "" !== a.title ? h = a.title: a.alt && "" !== a.alt ? h = a.alt: g.host.isMGJList ? h = "": "" !== i ? h = i: g.host.isTBList ? (h = a.parentNode.parentNode.parentNode.parentNode.children[0].children[0].title, j ? h = j: k ? h = k: l ? h = f.tmpl(l).text() : f(a.parentNode.parentNode.parentNode.parentNode).hasClass("col-item") ? h = f(a.parentNode.parentNode.parentNode.parentNode).find("h5").text() : f(a.parentNode.parentNode.parentNode.parentNode).hasClass("item") ? h = f(a.parentNode.parentNode.parentNode.parentNode).find(".title").text() : this.box.closest(".pic")[0] && (h = this.box.closest(".product-item").find(".title a").attr("title"))) : g.host.isTMList ? f(a.parentNode.parentNode.parentNode).find(".product-title")[0] ? h = f(a.parentNode.parentNode.parentNode).find(".product-title").text() : f(a.parentNode.parentNode.parentNode).find(".productTitle")[0] && (h = f(a.parentNode.parentNode.parentNode).find(".productTitle").text()) : g.host.isTMSubList ? h = a.parentNode.parentNode.text: g.host.isTBDetail ? h = b.replace("-淘宝网", "") : g.host.isTMDetail ? h = b.replace("-tmall.com天猫", "") : g.host.isTBFav ? h = "img-wrap" === a.parentNode.className ? f(a.parentNode.parentNode).find(".cont .g_price").text() : "img" === a.parentNode.className ? f(a.parentNode.parentNode.parentNode).find(".img-item-title").text() : "shop-icon" === a.parentNode.className ? f(a.parentNode.parentNode.parentNode).find(".shop-title")[0].title: f(a.parentNode.parentNode.parentNode).find(".title")[0].getElementsByTagName("a")[0].title: d.match(/shop/) || f(a).parents("li").find("a").eq(1).text() ? h = f(a).parents("li").find("a").eq(1).text() : g.host.isMLSDetail ? f(".tui_tle")[0] ? h = f(".tui_tle a").text() : f(".s_tle")[0] && (h = f("h3.s_tle").text()) : g.host.isVipDetail ? h = f(".pib_title_detail")[0] ? f(".pib_title_detail").text() : document.title.replace("_唯品会", "") : g.host.isGMDetail ? f(".prdtit")[0] && (h = f(".prdtit").text()) : g.host.isAMXDetail ? document.getElementById("productTitle") && (h = f("#productTitle").text()) : h = g.host.isLeFengDeatil ? document.title.replace("_乐蜂网", "") : g.host.isLeFengList ? f(a.parentNode.parentNode.parentNode).find(".nam font").html() : g.host.isLeFengBrand ? f(a.parentNode.parentNode.parentNode).find(".nam font").html() : g.host.isKaoLaList ? f(a.parentNode.parentNode.parentNode).find(".titlewrap a").html() : g.host.isBeiBeiList ? c.href.match(/you\.beibei\.com/) || c.href.match(/you\.beibei\.com\/index/) ? f(a).parent().parent().find(".title") : f(a).attr("title") : a.parentNode.parentNode.parentNode.textContent.replace(/\s/g, ""),
            g.host.isFengQu ? h = d.match(/search/) ? f(a).parent().parent().find("h3").html() : f(a).parents("a").attr("title") : g.host.isFengQuDetail ? h = document.title: g.host.isMiaDetail ? h = document.title: g.host.isMia ? h = f(a).parents("a").attr("title") : g.host.isStrawberrynetDetail ? h = f("#divProdName").find("h2").eq(0).html() : g.host.isStrawberrynet ? h = f(a).attr("alt") : g.host.isJumeiList ? h = f(a.parentNode.parentNode.parentNode).find(".s_l_name a").html().replace(/<[^>]*>/g, "").replace(/\s+/g, "") : g.host.isJumeiDetail && (h = document.title),
            g.host.isBeiBeiDetail ? h = document.title.replace("-贝贝网", "") : g.host.isKaoLaDetail && (h = f(".product-title").html()),
            "undefined" == typeof h && (h = ""),
            f.trim(h.slice(0, 100))
        },
        getLevel: function() {
            var a, b = "",
            c = "";
            return g.host.isDetail ? (a = {
                "s_red_1.gif": 1,
                "s_red_2.gif": 2,
                "s_red_3.gif": 3,
                "s_red_4.gif": 4,
                "s_red_5.gif": 5,
                "s_blue_1.gif": 6,
                "s_blue_2.gif": 7,
                "s_blue_3.gif": 8,
                "s_blue_4.gif": 9,
                "s_blue_5.gif": 10,
                "s_cap_1.gif": 11,
                "s_cap_2.gif": 12,
                "s_cap_3.gif": 13,
                "s_cap_4.gif": 14,
                "s_cap_5.gif": 15,
                "s_crown_1.gif": 16,
                "s_crown_2.gif": 17,
                "s_crown_3.gif": 18,
                "s_crown_4.gif": 19,
                "s_crown_5.gif": 20
            },
            g.host.isTM ? b = 30 : f(".rank")[0] && f(".rank")[0].src ? (c = f(".rank").attr("src").match(/s_.*/)[0], c && a[c] && (b = a[c])) : b = "", b) : b
        },
        getBrand: function() {
            var a = "";
            return e.isTMDetail && f(".J_EbrandLogo")[0] && (a = f(".J_EbrandLogo").text()),
            a
        },
        getImg: function() {
            function a(a) {
                return a ? a.match(/png/) ? a.replace(/png.*/, "png") : a.match(/gif/) ? a.replace(/gif.*/, "gif") : a.replace(/jpg.*/, "jpg") : void 0
            }
            var b = "",
            c = f("#J_itemViewed")[0] ? f("#J_itemViewed").data("value") : "";
            if (g.host.isTBDetail)"string" == typeof c ? "" === c ? document.getElementById("J_ImgBooth") && (b = document.getElementById("J_ImgBooth").getAttribute("src")) : b = c.replace(/.*pic":"/, "").replace(/".*/, "") : "object" == typeof c && c.pic && (b = c.pic),
            b.match(/\.jpg$/) && (b.match(/_\d+x[a-z\d]+\.jpg$/) ? b = b.replace(/_\d+x[a-z\d]+\.jpg$/, "_250x250.jpg") : b += "_250x250.jpg");
            else if (g.host.isTMDetail) {
                var d = document.getElementById("J_ImgBooth");
                d && (b = a(d.src)),
                b.match(/\.jpg$/) && (b.match(/_\d+x[a-z\d]+\.jpg$/) ? b = b.replace(/_\d+x[a-z\d]+\.jpg$/, "_250x250.jpg") : b += "_250x250.jpg")
            } else g.host.isTBList || g.host.isTMList || g.host.isTMSubList ? (b = a(this.target.src), b.match(/\.jpg$/) && (b.match(/_\d+x[a-z\d]+\.jpg$/) ? b = b.replace(/_\d+x[a-z\d]+\.jpg$/, "_250x250.jpg") : b += "_250x250.jpg")) : g.host.isAMXDetail ? b = f("#imgTagWrapperId img").data("old-hires") : "undefined" != typeof this.target.src && "" !== this.target.src ? b = this.target.src: g.host.isDDDetail ? b = document.getElementById("largePic").src: g.host.isVipDetail ? b = f(".J_mer_bigImgZoom").attr("href") : g.host.isGMList && (b = this.target.src);
            return b
        },
        getPrice: function() {
            function a(a) {
                return a ? ("number" == typeof a && (a = a.toString()), a.replace(/\./, "")) : void 0
            }
            var b = "",
            h = f("#J_itemViewed")[0] ? f("#J_itemViewed").data("value") : "",
            i = this.box.find(".price strong").eq(0).text(),
            j = this.box.find(".price").eq(0).text(),
            k = this.box.find(".p").eq(0).text(),
            l = f("#J_PromoPrice").hasClass("tb-hidden") || f("#J_PromoPrice").hasClass("hidden");
            if (this.box.find(".col.price").text() ? b = this.box.find(".col.price").text().slice(1) : this.box.find(".price em")[1] && this.box.find(".price em").eq(1).text() ? b = this.box.find(".price em").eq(1).text() : this.box.find(".price em").text() ? b = this.box.find(".price em").text() : i ? b = i: this.box.find(".g_price strong")[0] && this.box.find(".g_price strong").eq(0).text() ? b = d.match(/shop_collect_list/) ? f(this.target).parents(".item-show").find(".g_price strong").text() : this.box.find(".g_price strong").eq(0).text() : this.box.find(".productPrice em").attr("title") ? b = this.box.find(".productPrice em").attr("title") : g.host.isTBList && (b = this.box.closest(".grid-item")[0] ? this.box.closest(".grid-item").find(".price-num").text() + "00": this.box.closest(".item").find(".price")[0] ? this.box.closest(".item").find(".price").text() : this.box.closest(".product-item").find(".price-num").text()), this.box.find(".price").text() ? (b = this.box.find(".price").text(), b.toString().match(/\./) || (b = b.toString() + "00"), this.box.find(".price .origin-price")[0] && (b = this.box.find(".price").html().toString().replace(/span.*/g, ""), b = b.match(/[0-9].+[0-9]+/)[0])) : "object" == typeof h && h.price ? b = h.price: f("#J_PromoBox").text() ? b = f("#J_PromoBox").text().replace(/[^\x00-\xff]*/g, "") : j ? b = j: k && (b = k, b.match(/\./) ? b = b.replace(/\./, "") : b += "00"), window.TB && window.TB.PromoData && window.TB.PromoData.def && window.TB.PromoData.def[0] && window.TB.PromoData.def[0].price && (b = a(window.TB.PromoData.def[0].price)), g.host.isTMDetail && window.KISSY && (window.KISSY._TMD_Config && window.KISSY._TMD_Config.itemDO && window.KISSY._TMD_Config.itemDO.reservePrice && (b = a(window.KISSY._TMD_Config.itemDO.reservePrice)), b = f("#J_StrPriceModBox").hasClass("tm-price-cur") ? f("#J_StrPriceModBox .tm-price").text() : f("#J_PromoBox")[0] ? f("#J_PromoBox .tb-wrTuan-num").text() : f("#J_PromoPrice .tm-price").text()), g.host.isMGJDetail ? document.getElementById("J_NowPrice") ? b = f("#J_NowPrice").text() : document.getElementById("_sku_top_price") && (b = f("#_sku_top_price b").text()) : g.host.isPaipaiDetail ? b = f(".comm_info .price").html().match(/[0-9]+/)[0] : g.host.isYixunDetail ? b = "lowPrice" === f(".mod_price").eq(1).attr("itemProp") ? f(".mod_price").eq(1).text() : f(".mod_price").eq(0).text() : g.host.isYixunList ? this.box.closest(".mod_goods")[0] && (b = this.box.closest(".mod_goods").find(".mod_price").text()) : g.host.isJumeiDetail ? f(".price_num")[0] && (b = f(".price_num").eq(0).text() + "00") : g.host.isJuDetail && f(".currentPrice")[0] && (b = f(".currentPrice").eq(0).text()), g.host.isMLSDetail && (b = document.getElementById("price-now") ? f("#price-now").text() : f(".sku_meta .price").text()), g.host.isB2CDetail && (b = document.getElementById("jd-price") ? f("#jd-price").text() : document.getElementById("price") ? f("#price strong").text() : f(".shop_intro_a")[0] ? f(".shop_intro_a .price a").html() : f(".l_info_a b").eq(0).text()), g.host.isDDDetail && (document.getElementById("promo_price") && (b = f("#promo_price").text().replace(/-.+/, "").trim(), b.match(/\./) || (b += "00")), document.getElementById("salePriceTag") && (b = f("#salePriceTag").text().replace(/-.+/, "").trim(), b.match(/\./) || (b += "00")), f(".price_info")[0] && (b = f(".price_info .price_d").html())), g.host.isYHDDetail ? (document.getElementById("current_price") && (b = f("#current_price").text().replace("<em>¥</em>", "").replace("<i>", "").replace("</i>", "").replace("¥", "")), b = parseFloat(b).toFixed(2)) : g.host.isYHDList ? (this.box.parents(".itemBox")[0] ? b = this.box.parents(".itemBox").find(".num").attr("yhdprice") : this.box.closest(".search_item_box")[0] && (b = this.box.parents(".search_item_box").find(".price").text()), b = parseFloat(b).toFixed(2)) : g.host.isVjiaList ? this.box.closest(".proInfoBox")[0] && (b = this.box.closest(".proInfoBox").find(".proPrice .fl").text() + "00") : g.host.isSuningList ? this.box.closest(".item")[0] && (b = this.box.closest(".item").find(".price strong").text()) : g.host.isGMList ? this.box.closest(".prdli")[0] && (b = this.box.closest(".prdli").find(".price").text()) : g.host.isVanclList && (this.box.closest(".productwrapper")[0] && (b = this.box.closest(".productwrapper").find(".Sprice").text().replace("售价￥", "")), b = parseFloat(b).toFixed(2)), g.host.isVanclDetail && f(".cuxiaoPrice")[0] && (b = f(".cuxiaoPrice strong").text()), g.host.isVipDetail ? b = f(".pbox_price")[0] ? f(".pbox_price em").text() + "00": f(".pbox-price em").text() + "00": g.host.isVipList && this.box.parents(".cat-list-item")[0] && (b = this.box.parents(".cat-list-item").find(".cat-pire-nub").text() + "00"), g.host.isSuningDetail ? document.getElementById("promoPrice") ? b = f("#promoPrice").text() : document.getElementById("promotionPrice") && (b = f("#promotionPrice").text()) : g.host.isGMDetail ? document.getElementById("prdPrice") && (b = f("#prdPrice").text()) : g.host.isVjiaDetial ? document.getElementById("SpecialPrice") && (b = f("#SpecialPrice").text()) : g.host.isAMXList ? this.box.parents(".prod")[0] ? b = this.box.parents(".prod").find(".newp .bld").text() : this.box.parents(".s-result-item")[0] && (b = this.box.parents(".s-result-item").find(".s-price").text()) : g.host.isAMXDetail ? document.getElementById("priceblock_saleprice") ? b = f("#priceblock_saleprice").text() : document.getElementById("priceblock_ourprice") ? b = f("#priceblock_ourprice").text() : f(".priceLarge")[0] ? b = f(".priceLarge").text() : document.getElementById("tmmSwatches") && (b = f("#tmmSwatches .a-color-price").html()) : g.host.isB2CList ? b = this.box.parents(".gl-item")[0] ? this.box.parents(".gl-item").find(".p-price strong").text() : this.box.parents(".lh-wrap").find(".J_price").text() : g.host.isMGJList ? (b = this.box.parents(".iwf").find(".price_info").text().replace("¥", ""), b = parseFloat(b).toFixed(2)) : g.host.isDDList ? b = this.box.closest("li")[0] ? this.box.closest("li").find(".price_n").text() : this.box.parent().parent().find(".d_price").text() : g.host.isTMList ? this.box.closest(".product")[0] && (b = this.box.closest(".product").find(".productPrice").text()) : g.host.isMLSList ? this.box.closest(".new_poster")[0] && (b = this.box.closest(".new_poster").find(".price").text()) : g.host.isPaipaiList && this.box.closest(".goods_info")[0] && (b = this.box.closest(".goods_info").find(".price_now").text()), g.host.isTBDetail ? (l || (b = document.getElementById("J_PromoPrice") ? f("#J_PromoPrice .tb-rmb-num").eq(0).text() : f("#J_StrPriceModBox .tb-rmb-num").eq(0).text()), "" === b && (b = f("#J_StrPrice .tb-rmb-num").text())) : this.box.find(".now-price").text() && (b = this.box.find(".now-price").text()), c.host.match(/search\.jd\.com/) ? b = f.trim(a(this.box.parent().parent().siblings(".p-price").find("i").html())) || f.trim(a(this.box.parent().parent().siblings(".p-price").find("span").html())) || f.trim(a(this.box.parent().parent().siblings(".p-price").html())) : g.host.isLeFengList ? b = f.trim(a(this.box.parent().parent().siblings(".pri").find(".price").html())) + "00": g.host.isLeFengBrand ? b = f.trim(a(this.box.parent().parent().siblings(".pri").find(".price").html())) + "0": g.host.isLeFengDeatil ? b = f(".dity-price-c b").html() + "0": g.host.isKaoLaList ? (b = this.box.parent().parent().siblings(".desc").find(".cur").html().replace(/<i>¥/, "").replace(/<\/i>/, ""), b = parseFloat(b).toFixed(2)) : g.host.isKaoLaDetail ? (b = f("#js_currentPrice span").html(), b = parseFloat(b).toFixed(2)) : g.host.isBeiBeiList ? c.href.match(/you\.beibei\.com/) || c.href.match(/you\.beibei\.com\/index/) ? (b = this.box.parent().siblings(".detail").find(".now-price em").html(), b = parseFloat(b).toFixed(2)) : b = f.trim(a(this.box.siblings(".price-info").find(".price-int").html())) + f.trim(a(this.box.siblings(".price-info").find(".price-decimal").html())) : g.host.isFengQu ? b = f.trim(a(this.box.parent().parent().siblings(".product-1-r2").find("strong").html())) : g.host.isFengQuDetail ? b = f(".goods-price-r1 strong").html() + "00": g.host.isMiaDetail ? b = f(".pbox_price em").html() : g.host.isMia ? b = f.trim(a(this.box.parent().parent().parent().find(".nfp2").html())) : g.host.isStrawberrynetDetail ? b = f("#shopprice_" + c.href.match(/[0-9]{6}/)).find(".intPrice").eq(0).html() + f("#shopprice_" + c.href.match(/[0-9]{6}/)).find(".decPrice").eq(0).html() : g.host.isStrawberrynet ? b = f.trim(a(this.box.parents(".rowblock").find(".intPrice").html())) + f.trim(a(this.box.parents(".rowblock").find(".decPrice").html())) : g.host.isYmatouDetail ? b = f("#proDetail .promotion .count").html() || f("#proDetail .count").html() : (g.host.isYmatou || g.host.isYmatouList) && (b = c.href.match(/ymatou\.com\/Product/) ? this.box.parents("li").find(".price strong").html() : this.box.parents("li").find("p:not(.tl) em").html().replace(/\￥/, "") || this.box.parents(".yht_spc").find("p:not(.tl) em").html().replace(/\￥/, ""), b = parseFloat(b).toFixed(2)), g.host.isBeiBeiDetail && (b = "you.beibei.com" === c.host ? f(".view-SkuPriceInfo").find(".now-price i").html() : f(".view-SkuPriceInfo").find(".price").html(), b = parseFloat(b).toFixed(2)), "lu.taobao.com" === e) {
                var m = this.box.parents(".goods-pic");
                0 !== m.length && (b = m.parent().find(".g_price strong")[0].textContent, b = this.priceFix(b))
            }
            if ("style.taobao.com" === e) {
                var n = this.box.parents(".inner");
                0 !== n.length && (b = n.find(".price").text())
            }
            if ("cart.taobao.com" === e) {
                var o = this.box.parents(".item-content");
                0 !== o.length && (b = o.find(".price-now").text())
            }
            return c.href.match(/search\.jumei\.com/) && (b = this.box.parents(".item_wrap").find(".search_list_price span").html(), b = parseFloat(b).toFixed(2)),
            "" === b && (b = 0 !== this.box.parents(".acs-hr-rotoblock").length ? this.box.parents(".acs-hr-rotoblock").find(".a-color-price").text() : this.findPrice(this.box[0].parentNode, 4)),
            b && b.toString().match(/\./) && (b = f.trim(a(b))),
            b.match(/-/) && (b = b.replace(/-.+/, "")),
            b.match(/,/) && (b = b.replace(/,/, "")),
            b.match(/¥0/) && (b = b.replace(/¥0/, "¥")),
            b.replace(/[^\x00-\xff]*/g, "").replace(/¥/g, "")
        },
        findPrice: function(a, b) {
            if (0 === b) return "";
            var c = a.textContent.replace(/\s/g, "").match(/(￥|¥)([0-9.,]+)/);
            return c ? this.priceFix(c[0].slice(1)) : this.findPrice(a.parentNode, b - 1)
        },
        priceFix: function(a) {
            var b = a.indexOf(".");
            return - 1 === b ? a += ".00": 2 === a.slice(b).length ? a += "0": a.slice(b).length > 3 && (a = a.slice(0, b + 3)),
            a
        },
        getOriPrice: function() {
            function a(a) {
                return a ? ("number" == typeof a && (a = a.toString()), a.replace(/\./, "")) : void 0
            }
            var b = "";
            return g.host.isTBDetail ? b = f("#J_StrPrice").text() : g.host.isTMDetail && (b = f("#J_StrPriceModBox .tm-price").text()),
            b && b.toString().match(/\./) && (b = f.trim(a(b))),
            b.match(/-/) && (b = b.replace(/-.+/, "")),
            b.match(/,/) && (b = b.replace(/,/, "")),
            b.replace(/[^\x00-\xff]*/g, "").replace(/¥/g, "")
        },
        getHref: function() {
            var a = "",
            b = g.host.isB2CDetail;
            return g.host.isTBDetail || g.host.isTMDetail || g.host.isB2CDetail || g.host.isYHDDetail || g.host.isVipDetail || g.host.isGMDetail || g.host.isVjiaDetial || g.host.isDDDetail || g.host.isSuningDetail || g.host.isVanclDetail || g.host.isAMXDetail || g.host.isMGJDetail || g.host.isMLSDetail ? a = c.href: b ? a = window.pageConfig.product.href: "IMG" === this.target.nodeName ? f(this.target).parents("a")[0] && (a = f(this.target).parents("a")[0].href) : a = "A" === this.target.nodeName ? this.target.href: c.href,
            a
        },
        getSex: function() {
            var a = "",
            b = this.getTitle();
            return b.match(/男/) ? a = "男": b.match(/女/) && (a = "女"),
            a
        },
        getSum: function() {
            function a(a) {
                var b = a.replace(/[^\x00-\xff]*/g, "");
                return a.match(/万/) && (b += "万"),
                f.trim(b)
            }
            var b = "0",
            c = (e === g.host.tbListS || "s8.taobao.com" === e) && this.box.find(".col.dealing").text(),
            d = this.box.find(".dealing .dealnum").text(),
            h = "search.taobao.com" === e && this.box.find(".col.dealing div:eq(0)").text(),
            i = e === g.host.tbList && this.box.find(".quantity .num").text(),
            j = e === g.host.tbSearch1 && this.box.find(".trade-num").text(),
            k = g.host.isTMList && this.box.find(".productStatus em").text(),
            l = g.host.isTBDetail && f(".J_SellCounter").eq(0).text(),
            m = g.host.isTMDetail && f(".tm-count").eq(1).text();
            return this.box.find(".person-count").text() && (b = a(this.box.find(".person-count").text())),
            this.box.find(".transaction").text() && (b = a(this.box.find(".transaction").text())),
            this.box.find(".sale").text() && (b = a(this.box.find(".sale").text())),
            this.box.find(".amount").text() && (b = a(this.box.find(".amount").text())),
            d && d.match(/笔/) && (b = a(d)),
            c && (b = a(c)),
            i && (b = a(i)),
            j && (b = a(j)),
            h && h.match(/笔/) && (b = h.replace(/.*交/, "").replace(/[^\x00-\xff]*/g, "")),
            k && (b = a(k)),
            l && (b = l),
            m && (b = a(m)),
            g.host.isTBFav && this.box.find(".tuijian-sell")[0] && (b = a(this.box.find(".tuijian-sell").text())),
            g.host.isTMDetail && window.KISSY && window.KISSY.use("malldetail/model/product",
            function(a, c) {
                c.onChange("salesCount",
                function(a) {
                    a && (b = a.monTotal)
                })
            }),
            b
        },
        getFeedBackCount: function() {
            var a = "0";
            return g.host.isTBDetail ? a = f(".J_RateCounter").text() : g.host.isTMDetail && (a = f(".tm-count").eq(0).text()),
            a
        },
        getCid: function() {
            var a = "";
            return f("#J_itemViewed")[0] && f("#J_itemViewed").attr("catid") ? a = f("#J_itemViewed").attr("catid") : document.getElementById("tb-beacon-aplus") && (a = document.getElementById("tb-beacon-aplus").getAttribute("exparams"), a.match(/^.*item%5f([0-9]{3,9})&.*$/) && (a = a.match(/^.*item%5f([0-9]{3,9})&.*$/)[1])),
            a
        },
        getLocation: function() {
            var a = "";
            return this.box.find(".place").text() ? a = this.box.find(".place").text() : f(".tb-location em").eq(0).text() ? a = f(".tb-location em").eq(0).text() : f(".bts-extend:first li:last").text() ? a = f(".bts-extend:first li:last").text().replace(/.*：/, "") : f(".locus").eq(0).text() ? a = f.trim(f(".locus").eq(0).text().replace(/.*：/, "")).replace(/,/, "") : f(".locus").eq(0).text() ? a = f.trim(f(".locus").eq(0).text().replace(/.*：/, "")).replace(/,/, "") : this.box.find(".loc").text() && (a = this.box.find(".loc").text()),
            g.host.isTMDetail && window.KISSY && window.KISSY.use("malldetail/model/product",
            function(b, c) {
                c.onChange("delivery",
                function(b) {
                    b && (a = b.deliveryAddress)
                })
            }),
            f.trim(a)
        },
        getNick: function() {
            var a = "";
            return this.box.find(".ww-light").data("nick") ? a = this.box.find(".ww-light").data("nick") : f(".J_WangWang").eq(0).data("nick") ? a = f(".J_WangWang").eq(0).data("nick") : f(".ww-light").eq(0).data("nick") && (a = f(".ww-light").eq(0).data("nick")),
            a
        },
        getItemStyle: function() {
            var a = !1;
            return g.host.isDetail && "50012010" === this.getCid() && f(".attributes-list").text().match(/款式/) && f(".attributes-list li").each(function(b, c) {
                f(c).text().match(/款式/) && (a = f(c).text().slice(4, f(c).text().length))
            }),
            a
        }
    },
    b
}),
__tk__define("searchbar", ["./lib/jquery", "./utils", "./host"],
function(a, b, c) {
    function d() {
        var a = "";
        if (g.isItaobao) return f.statLog_one({
            systemName: "ttk_tbUserMsg_log",
            nick: j,
            level: "",
            weibo: "",
            mobile: ""
        }),
        !1;
        if (e("#J_TSearchForm button")[0]) e("#J_TSearchForm button").on("click",
        function() {
            a = document.getElementById("q").value,
            h.trigger("ttk.searchbtn.click", a)
        });
        else if (e("#J_SearchForm button")[0]) e("#J_SearchForm button").on("click",
        function() {
            a = document.getElementById("q").value,
            h.trigger("ttk.searchbtn.click", a)
        });
        else if (e(".searchform button")[0]) e(".searchform button").on("click",
        function() {
            a = document.getElementById("title").value,
            h.trigger("ttk.searchbtn.click", a)
        });
        else if (e("#J_C2C_Search")[0]) e(".J_SearchMarket")[0] && e(".J_SearchMarket").on("click",
        function() {
            a = document.getElementById("ts-keyword").value,
            h.trigger("ttk.searchbtn.click", a)
        }),
        e(".J_SearchTB")[0] && e(".J_SearchTB").on("click",
        function() {
            a = document.getElementById("ts-keyword").value,
            h.trigger("ttk.searchbtn.click", a)
        });
        else {
            if (!e(".mallSearch-input button")[0]) return ! 1;
            e(".mallSearch-input button").on("click",
            function() {
                a = document.getElementById("mq").value,
                h.trigger("ttk.searchbtn.click", a)
            })
        }
    }
    var e = a("./lib/jquery"),
    f = a("./utils"),
    g = a("./host"),
    h = e("body"),
    i = document.cookie,
    j = i.replace(/.*tracknick=/, "").replace(/;.*/, "");
    h.on({
        "ttk.searchbtn.click": function(a, b) {
            f.statLog({
                systemName: "ttk_searchkw_log",
                kw: encodeURIComponent(b),
                pType: g.pageType,
                nick: j,
                sType: 0
            })
        }
    }),
    c.exports = {
        init: d
    }
}),
__tk__define("socket", ["./utils", "./lib/jquery", "./host", "./models/models", "./models/taobao", "./models/jsonp", "./views/prefix", "./lib/underscore", "./models/api", "./product", "./utils/env", "./models/b2c", "./models/remind", "./models/lds", "./models/juxiao", "./models/tuan", "./templates.jst", "./lib/jquery.tmpl"],
function(a, b, c) {
    function d() {
        if (p++, j(".TK-jjtx")[0]) return clearInterval(r),
        !1;
        var a = [1, 11, 18],
        b = a[i.selectFrom(0, 2)];
        m.one("socket.message.get",
        function(a, b) {
            if (b && "undefined" != typeof b.data.messages && b.data.messages[0]) {
                var c = b.data.messages[0].type,
                d = !1;
                if (18 === c) paopaoTmpl = '<div class="TK-paopao-hd"> <s class="TK-paopao-logo"></s> <h3 class="TK-paopao-title"> 欧耶，您关注的商品有更划算的同款啦！ </h3> <span class="TK-paopao-close" title="关闭"></span> </div> <div class="TK-paopao-bd"> <div class="TK-paopao-img"> <a class="TK-paopao-img-alink" href="${url}" target="_blank"> <img src="${imgurl}"/> </a> </div> <div class="TK-paopao-info"> <p class="TK-paopao-msg"> 您关注的商品<a href="${url}" target="_blank">“${title}”</a>有更划算的同款啦！ </p> <div class="TK-paopao-price"> <span>同款价格￥${curprice}</span> <del>原品价格￥${srcprice}</del> </div> <p class="TK-paopao-date"> 更新于${sendtime}</p> </div> <a target="_blank" href="${url}" class="TK-paopao-alink J-paopao-alink"></a><p class="TK-paopao-gohome"> <a href="http://i.taotaosou.com/user?hash=priceremind/p/1#priceremind/p/1" class="TK-go" target="_blank">修改我的降价提醒</a></p> </div>';
                else if (1 === c) d = !0,
                paopaoTmpl = l["bijia/sub.remind.paopao"];
                else {
                    if (11 !== c) return ! 1;
                    paopaoTmpl = '<div class="${app}paopao-hd"> <s class="${app}paopao-logo"></s> <h3 class="${app}paopao-title"> 找到你要的商品啦，快去看看吧！ </h3> <span class="${app}paopao-close" title="关闭"></span></div><div class="${app}paopao-bd"> <p class="${app}paopao-q"> <span>问：</span> ${question}</p> <div class="${app}paopao-img"> <a class="${app}paopao-img-alink" href="${url}" title="" target="_blank"> <img src="${imgurl}"/> </a> </div> <div class="${app}paopao-info"> <i class="icons triangle-left-empty"> <i class="subicon"></i> </i> <div class="${app}paopao-pro-wrap"> <h3 class="${app}paopao-pro-title"> ${sum}个答案，更新于${sendtime}</h3> <ul class="${app}paopao-pro-list">{{each answers}}<li> <a href="#" target="_blank" class="alink"> <img src="${$value}"/> </a> </li>{{/each}}</ul> </div> </div> <a target="_blank" href="${url}" class="${app}paopao-alink ${app}paopao-alink-bwz J-paopao-alink"></a></div>'
                }
                e(b.data.messages[0], c, d)
            }
        }),
        k.remind.getMessage(b)
    }
    function e(a, b, c) {
        if (a) {
            o++;
            var d = j("#J-TK-PP"),
            e = j('<div class="TK-jjtx"></div>'),
            g = JSON.parse(a.msg);
            if (console.log(g), 11 === b) {
                var h = g.answer.split(",");
                j.extend(g, {
                    app: "TK-",
                    id: a.id,
                    url: g.url + "?utm_source=itemlike&utm_medium=ttk&utm_campaign=finddetail&outer_code=zxb001",
                    sum: h.length,
                    answers: h
                })
            } else j.extend(g, {
                id: a.id,
                url: g.url,
                img: g.imgurl,
                curprice: (g.curprice / 100).toFixed(2),
                srcprice: (g.srcprice / 100).toFixed(2),
                title: g.title
            });
            c ? m.append(paopaoTmpl(g)) : (j.tmpl(paopaoTmpl, g).appendTo(e), e.appendTo(d)),
            i.stat("pao_frame_success", !0),
            f(e)
        }
    }
    function f(a) {
        var b = a.find(".TK-paopao-close"),
        c = a.find(".J-paopao-alink"),
        d = a.find(".TK-go");
        d.on("click",
        function() {
            i.stat("pao_my_click", !0)
        }),
        c.on("click",
        function() {
            a.animate({
                height: 0
            },
            600, "linear",
            function() {
                a.hide(),
                a.remove(),
                i.stat("pao_C_click", !0),
                ca = !1
            }),
            setTimeout(function() {
                r && clearInterval(r),
                g(),
                j(".TK-jjtx")[0] && j(".TK-jjtx").eq(0).show()
            },
            5e3)
        }),
        b.on("click",
        function() {
            a.animate({
                height: 0
            },
            600, "linear",
            function() {
                a.hide(),
                a.remove(),
                i.stat("pao_X_click", !0),
                ca = !1
            }),
            setTimeout(function() {
                r && clearInterval(r),
                g(),
                j(".TK-jjtx")[0] && j(".TK-jjtx").eq(0).show()
            },
            5e3)
        })
    }
    function g() {
        r = setInterval(function() {
            return o > 1 ? (clearInterval(r), r = null, !1) : void(p > q ? clearInterval(r) : d())
        },
        3e5)
    }
    function h() {
        n = i.userData(),
        n && "undefined" != typeof n.id && "" !== n.id ? (g(), j(window).on({
            focus: function() {
                r && (clearInterval(r), r = null),
                g()
            },
            blur: function() {
                o = 0,
                clearInterval(r)
            }
        })) : (m.one("user.status.get",
        function(a, b) {
            b && (0 === b.status || (g(), j(window).on({
                focus: function() {
                    console.log("focus page"),
                    r && (clearInterval(r), r = null),
                    g()
                },
                blur: function() {
                    console.log("blur this"),
                    o = 0,
                    clearInterval(r)
                }
            })))
        }), k.remind.userStatus())
    }
    var i = a("./utils"),
    j = a("./lib/jquery"),
    k = a("./models/models"),
    l = a("./templates.jst"),
    m = j("body");
    a("./lib/jquery.tmpl");
    var n, o = 0,
    p = 0,
    q = 3,
    r = null; !
    function() {
        i.loadCSS("//exts.taotaosou.com/browser-static/taobao/paopao.css");
        var a = j('<div id="J-TK-PP" class="TK-paopao-wrap"></div>');
        a.appendTo(m)
    } (),
    c.exports = {
        init: function() {
            setTimeout(function() {
                h()
            },
            5e3)
        }
    }
}),
__tk__define("spider", ["./lib/jquery", "./models/api", "./product", "./utils", "./host", "./utils/env", "./models/jsonp"],
function(a, b, c) {
    function d() {
        if (document.location.href.match(/https:\/\/sec\.taobao\.com\/query\.htm/) && j({
            url: "//col.taotaosou.com/loin.do?lov=page_verify",
            timeout: 3e3
        }), i.isTM || i.isTaobao) {
            var a = h.spider();
            a && g.ajax({
                url: a,
                timeout: 5e3,
                type: "get",
                dataType: "jsonp",
                success: function(a) {
                    a && (i.isTMList || i.isTBList ? (window.postMessage({
                        type: "ttkData",
                        data: a
                    },
                    "*"), j({
                        url: "//col.taotaosou.com/loin.do?lov=list_url_success&url=" + encodeURIComponent(a),
                        timeout: 3e3
                    })) : (e(a), j({
                        url: "//col.taotaosou.com/loin.do?lov=detail_url_success&url=" + encodeURIComponent(a),
                        timeout: 3e3
                    })))
                }
            })
        }
    }
    function e(a) {
        try {
            f.ajax({
                url: a,
                timeout: 5e3,
                dataType: "jsonp",
                success: function(b) {
                    b && (b.url = a, window.postMessage({
                        type: "ttkData",
                        data: b
                    },
                    "*"), j({
                        url: "//col.taotaosou.com/loin.do?lov=detail_data_success&url=" + encodeURIComponent(a),
                        timeout: 3e3
                    }))
                }
            })
        } catch(b) {
            throw new Error("connection is failed")
        }
    }
    var f, g = a("./lib/jquery"),
    h = a("./models/api"),
    i = a("./host"),
    j = a("./models/jsonp");
    f = window.KISSY ? window.KISSY: g,
    c.exports = {
        init: function() {
            d()
        }
    }
}),
__tk__define("templates", [],
function() {
    return {
        "b2c.detail.box": '<div class="${app}container ${host}" id="${app}con">    <div class="${app}hd">        <a href="http://www.taotaosou.com/?utm_medium=ttk&utm_source=logo" class="${app}logo" target="_blank" title="汇海雷达"></a>        {{if noFound}}          <p class="${app}no-product">未找到相似的宝贝，可能的原因？</p>        {{else}}          <div class="${app}tabs-bar">              <div class="${app}tabs-button">                  <div class="${app}tabs-button-con">比价</div>              </div>          </div>        {{/if}}    </div>    {{if load}}      <div class="${app}loading">载入中...</div>    {{else}}      {{if noFound}}      {{else}}        <div class="${app}bd" data-status="close">            <div class="${app}tabs-body">                <div class="${app}tabs-panel ${app}tabs-panel-selected"><a href="${more}" class="${app}more" target="_blank" title="点击查看更多同款商品">查看更多</a>                 </div>                <div id="J-${app}recon" class="${app}tabs-panel"><a href="${more}" class="${app}more" target="_blank" title="点击查看更多同款商品">查看更多</a>                </div>            </div>        </div>        <div class="${app}close" title="收起同款商品">关闭</div>      {{/if}}    {{/if}}    <div class="${app}lock-ui">        <div class="${app}lock-ui-con">            <div>正在帮您优化性价比最高的商品</div>        </div>    </div></div>',
        "b2c.detail.box.nofound": '<div class="${app}container ${host}" id="${app}con">    <div class="${app}hd">        <a href="http://www.taotaosou.com/?utm_medium=ttk&utm_source=logo" class="${app}logo" target="_blank" title="汇海雷达"></a>        <div class="${app}tabs-bar">            <div class="${app}tabs-button">                <div class="${app}tabs-button-con">比价</div>            </div>        </div>    </div>    {{if load}}        <div class="${app}loading">载入中...</div>    {{else}}        {{if noFound}}        {{else}}            <div class="${app}bd" data-status="close">                <div id="${app}404-same">                    <div style="margin-left: 115px;" id="${app}404-same-hd"></div>                    <!--<div id="${app}404-same-land"></div>                    <div id="${app}404-same-bd">                        <div id="${app}404-same-title">今日促销信息                            <span class="${app}404-same-icon"></span>                        </div>                    </div>-->                </div>            </div>            <div class="${app}close" title="收起同款商品">关闭</div>        {{/if}}    {{/if}}</div>',
        "b2c.detail.box.nofound.item": '<a href="${itemUrl}" class="${app}404-same-item">${title1} <em class="${app}404-same-sale">${title2}</em></a>',
        "b2c.detail.box.product": '<div class="${app}item" data-id="${numIid}">    <a data-stat= \'{"shop":"${webSite}","iscom":"${iscom}","pid":"${numIid}","pric":"${price}","proPric":"${promoPrice}","volum":"${commissionNum}","level":"${creditGrade}","com":"${com}"}\' class="${app}media ${app}detail" href="${clickUrl}" target="_blank">        <img src="${img}" alt="${title}">    </a>    <div class="${app}price-container">        <div class="${app}unit">￥</div>        <div class="${app}price">${promoPrice}</div>    </div>    {{if _price}}        <div class="${app}price-del">            <del>￥${_price}</del>        </div>    {{/if}}    <div class="${app}shop">        <div class="${app}shop-${webSite} ${app}shop-item" title="${webSiteTitle}">${$value}</div>    </div>    <div class="${app}clear">        {{if commissionNum}}            <div class="${app}sum">销量 ${commissionNum}</div>        {{/if}}    </div></div>',
        "b2c.detail.magnifier": '<div class="${app}mangnifier">    <div class="${app}mangnifier-media">        <a href="${url}" target="_blank" data-stat="${stat}" class="${app}detail">            <img src="${img}">        </a>    </div>    <a href="${url}" target="_blank" data-stat="${stat}" class="${app}detail">${title}</a>    <div id="${app}shop" class="${app}clear">        <img src="${level}" alt="信用等级" id="${app}level">        <div id="${app}comment">            {{if isCom}}                {{if com}}                    评价：${com}                {{/if}}            {{else}}                {{if com}}                    <a href="${href}" data-stat="${stat}" class="J_comlink" target="_blank">评价：${com}</a>                {{/if}}            {{/if}}        </div>    </div></div>',
        "b2c.list.box.body": '<ul class="${app}bd-tab">    <a href="http://www.taotaosou.com" target="_blank" title="汇海雷达" id="${app}logo" class="${app}logo-tk"></a></ul><div class="${app}bd-loading">    <div class="${app}bd-load-wrap">        <span class="${app}bd-load-msg">汇海雷达正在为您搜索</span>    </div></div><div class="${app}bd-itemlist" style="display:none;">    <ul id="${app}list" class="${app}ul-list"></ul>    <ul id="J-${app}recon" class="${app}ul-list" style="display:none;"></ul>    <div class="${app}list-ft">        <a href="javascript:;" class="${app}tag-move" title="敬请期待" target="_blank">查看更多</a>     </div></div><i class="icons triangle-left-empty">    <i class="subicon"></i></i>',
        "b2c.list.box.container": '<div style="visibility:hidden;" id="${app}media">    <a href="" id="${app}source-product" target="_blank" class="${app}hidden"></a><a href="javascript:;" id="${app}button">相似宝贝</a>    <div class="${app}container" id="${app}con">        <div id="${app}bd" class="${app}bd">            <div class="${app}bd-loading">                <span>汇海雷达正在为您搜索</span>            </div>            <div class="${app}bd-itemlist" style="display: none;">                <ul id="${app}list" class="${app}ul-list"></ul>                <div class="${app}list-ft">                    <a href="http://www.taotaosou.com?utm_medium=ttk&utm_source=logo" target="_blank" id="${app}logo" class="${app}logo-tk"></a>                </div>            </div>            <ul class="${app}bd-tab"></ul>        </div>    </div></div>',
        "b2c.list.box.nofound": '<div class="${app}no-found-box">    <ul class="${app}bd-tab">        <a href="http://www.taotaosou.com?utm_medium=ttk&utm_source=logo" target="_blank" title="汇海雷达" id="${app}logo" class="${app}logo-tk"></a>    </ul>    <div id="${app}404">        <div id="${app}404-hd">            <div style="border: none;" class="${app}bg-img">                <span></span>            </div>        </div>        <!--{{if siAdList}}            <div id="${app}404-bd">                <div>                    <a href="${siAdList[0].url}" class="${app}404-click" target="_blank">                        <img src="${siAdList[0].img}" alt="${siAdList[0].title}" height="80" width="80">                    </a>                    <a href="${siAdList[1].url}" class="${app}404-click" target="_blank">                        <img src="${siAdList[1].img}" alt="${siAdList[1].title}" height="80" width="80">                    </a>                    <a href="${siAdList[2].url}" class="${app}404-click" target="_blank">                        <img src="${siAdList[2].img}" alt="${siAdList[2].title}" height="80" width="80">                    </a>                </div>                <div id="${app}404-desc"><a href="${siAdList[0].url}" target="_blank" class="${app}404-click" id="${app}404-desc-title">${siAdList[0].title}</a><a href="${siAdList[0].url}" target="_blank" class="${app}404-click" id="${app}404-desc-con">${siAdList[0].desc.slice(0,27)}...&gt;&gt;</a>                 </div>            </div>        {{/if}}-->    </div>    <a class="${app}close" href="javascript:;" title="关闭"></a>    <i class="icons triangle-left-empty"> <i class="subicon"></i> </i></div>',
        "b2c.list.box.product": '<li>    <div class="${app}item TK-tabs-panel">        <div class="${app}item-img">            <a title="${title}" data-stat= \'{"pid": "${numIid}", "shop":"${webSite}", "pric": "${price}", "proPric": "${promoPrice}", "volum": "${commissionNum}", "level": "${creditGrade}"}\' class="J_alink" href="${clickUrl}" target="_blank">                <img src="${img}" alt="${title}">            </a>        </div>        <div class="${app}item-info">            <h3 class="${app}item-title"><a class="J_alink" data-stat= \'{"pid": "${numIid}", "shop":"${webSite}", "pric": "${price}", "proPric": "${promoPrice}", "volum": "${commissionNum}", "level": "${creditGrade}"}\' href="${clickUrl}" target="_blank" title="${title}">${title}</a>            </h3>            <div class="${app}tag-com">                {{if _price}}                    <del class="${app}tag-del">￥${_price}</del>                {{/if}}                <span class="${app}shop-item ${app}shop-${webSite}" title="${webSiteTitle}"></span>            </div>            <div class="${app}price-sales">                <span class="${app}item-price">￥${promoPrice}</span>                <span class="${app}item-sales">${_feedbackCount}条评论</span>            </div>        </div>        <a data-stat= \'{"pid": "${numIid}","shop":"${webSite}", "pric": "${price}", "proPric": "${promoPrice}", "volum": "${commissionNum}", "level": "${creditGrade}"}\' href="${clickUrl}" target="_blank" title="${title}" class="J_alink TK-item-alink"></a>    </div></li>',
        "b2c.list.box.retab": '<a href="http://www.taotaosou.com?utm_medium=ttk&utm_source=logo" target="_blank" title="汇海雷达" id="${app}logo" class="${app}logo-tk"></a><div class="${app}tab-li">    <li class="${app}tab-frist"><a class="${app}active" href="javascript:;">比价</a>    </li></div>',
        "jpt.detail": '<div class="${app}item" data-id="${numIid}"><a        data-stat=\'{"iscom":"${iscom}","pid":"${id}","pric":"${price}","proPric":"${promoPrice}","volum":"${commissionNum}","level":"${creditGrade}","com":"${com}","mType":"${mType}"}\'        class="${app}media ${app}detail" href="${clickUrl}" target="_blank"><img src="${img}" alt="${title}"> </a>    <a class="${app}title" href="${clickUrl}" target="_blank">        ${title}    </a>    <div class="${app}price-container">        <div class="${app}unit">￥</div>        <div class="${app}price">${price}</div>    </div>    <div class="${app}zk"><span>${zhekou}</span></div></div>',
        "lds.box": '<div class="TK-lds-wrap">    <div id="J-TK-lds-con" class="TK-lds-con">        <div class="TK-lds-icon"></div>        <div id="J-TK-lds-slide">            <span class="TK-lds-close">x</span>            <span id="J-TK-lds-prev" class="TK-lds-prev"></span>            <span id="J-TK-lds-next" class="TK-lds-next"></span>            <div id="J-TK-lds-hd" class="TK-lds-hd">            </div>            <div class="TK-lds-bd">              <div id="J_tts_bubble_logo"><a href="http://un.taotaosou.com" class="media_bubble_logo_new" target="_blank">汇海雷达提供</a></div>                <div id="J-TK-lds-bd-con" class="TK-lds-bd-con">                </div>            </div>        </div>    </div></div>',
        "mlsmgj.detail.box.body": '<div class="${app}bd-itemlist">    <ul id="${app}list" class="${app}ul-list ${app}bd-item"></ul>    <div id="${app}lock"></div>    <div class="${app}list-ft"> <a href="${more}" id="${app}move" class="${app}tag-move" target="_blank">查看更多</a>     </div></div>',
        "mlsmgj.detail.box.container": '<div class="${app}container" id="${app}con" style="left:${left}px;top:${top}px;display:block;">    <div id="${app}bd" class="${app}bd">        <ul class="${app}bd-tab">            <a href="http://www.taotaosou.com?utm_medium=ttk&utm_source=logo" target="_blank" title="汇海雷达" id="${app}logo" class="${app}logo-tk"></a>            <a class="${app}close" href="javascript:;" title="关闭"></a>        </ul>        <div class="${app}bd-loading">            <div class="${app}bd-load-wrap">                <span class="${app}bd-load-msg">汇海雷达正在为您搜索</span>            </div>        </div> <i class="icons triangle-left-empty"> <i class="subicon"></i> </i>    </div></div>',
        "mlsmgj.detail.box": '<div class="${app}container ${host}" id="${app}con">    <div class="${app}hd">        <a href="http://www.taotaosou.com/?utm_medium=ttk&utm_source=logo" class="${app}logo" target="_blank" title="汇海雷达"></a>        {{if noFound}}        <p class="${app}no-product">未找到相似的宝贝，可能的原因？</p>        {{else}}        <div class="${app}tabs-bar">            <div class="${app}tabs-button TK-tabs-tab-selected">            </div>        </div>        {{/if}}    </div>    {{if load}}    <div class="${app}loading">载入中...</div>    {{else}}    {{if noFound}}    {{else}}    <div class="${app}bd" data-status="close">        <div class="${app}tabs-body">            <div class="${app}tabs-panel ${app}tabs-panel-selected"><a href="${more}" class="${app}more" target="_blank" title="点击查看更多同款商品">查看更多</a>            </div>            <div id="J-${app}recon" class="${app}tabs-panel"><a href="${more}" class="${app}more" target="_blank" title="点击查看更多同款商品">查看更多</a>            </div>        </div>    </div>    <div class="${app}close" title="收起同款商品">关闭</div>    {{/if}}    {{/if}}    <div class="${app}lock-ui">        <div class="${app}lock-ui-con">            <div>正在帮您优化性价比最高的商品</div>        </div>    </div></div>',
        "mlsmgj.detail.box.nofound": '<div class="${app}no-found-box">    <ul class="${app}bd-tab">        <a href="http://www.taotaosou.com/?utm_medium=ttk&utm_source=logo" target="_blank" title="汇海雷达" id="${app}logo" class="${app}logo-tk"></a>        <a class="${app}close" href="javascript:;" title="关闭"></a>    </ul>    <div id="${app}404">        <div id="${app}404-hd">            <div class="${app}bg-img">                <span></span>            </div>        </div>        {{if siAdList}}            <div id="${app}404-bd">                <div>                    <a href="${siAdList[0].url}" class="${app}404-click" target="_blank">                        <img src="${siAdList[0].img}" alt="${siAdList[0].title}" height="80" width="80">                    </a>                    <a href="${siAdList[1].url}" class="${app}404-click" target="_blank">                        <img src="${siAdList[1].img}" alt="${siAdList[1].title}" height="80" width="80">                    </a>                    <a href="${siAdList[2].url}" class="${app}404-click" target="_blank">                        <img src="${siAdList[2].img}" alt="${siAdList[2].title}" height="80" width="80">                    </a>                </div>                <div id="${app}404-desc">                    <a href="${siAdList[0].url}" target="_blank" class="${app}404-click" id="${app}404-desc-title">${siAdList[0].title}</a>                    <a href="${siAdList[0].url}" target="_blank" class="${app}404-click" id="${app}404-desc-con">${siAdList[0].desc.slice(0,27)}...&gt;&gt;</a>                 </div>            </div>        {{/if}}    </div> <i class="icons triangle-left-empty"> <i class="subicon"></i> </i></div>',
        "mlsmgj.detail.box.product": '<li>    <div class="${app}item TK-tabs-panel">        <div class="${app}item-img">            <a title="${title}" data-stat= \'{"pid": "${numIid}", "pric": "${price}", "proPric": "${promoPrice}", "volum": "${commissionNum}", "level": "${creditGrade}", "mType": "${mType}"}\' class="J_alink" href="${clickUrl}" target="_blank">                <img src="${img}" alt="${title}">            </a>            {{if isSource}}              <span class="${app}tag-source"></span>            {{/if}}        </div>        <div class="${app}item-info">            <h3 class="${app}item-title"><a class="J_alink" data-stat= \'{"pid": "${numIid}", "pric": "${price}", "proPric": "${promoPrice}", "volum": "${commissionNum}", "level": "${creditGrade}", "mType": "${mType}"}\' href="${clickUrl}" target="_blank" title="${title}">${title}</a>            </h3>            <div class="${app}tag-com">              <a data-stat= \'{"pid": "${numIid}", "pric": "${price}", "proPric": "${promoPrice}", "volum": "${commissionNum}", "level": "${creditGrade}", "mType": "${mType}"}\' target="_blank" href="${clickUrl}" class="${app}item-tags">                {{if tag}}                  {{each tag}}                    <span class="${app}tag-${$value} J-${app}tag-item"id="">${$value}</span>                  {{/each}}                {{/if}}              </a>              {{if isCom}}                <span class="TK-item-com">                  {{if com}}                    ${com}条评论                  {{/if}}                </span>              {{else}}                <a target="_blank" data-stat= \'{"pid": "${numIid}", "pric": "${price}", "proPric": "${promoPrice}", "volum": "${commissionNum}", "level": "${creditGrade}", "mType": "${mType}"}\' href="${comUrl}" class="J_comlink TK-item-com">                  {{if com}}${com}条评论{{/if}}                </a>              {{/if}}            </div>            <div class="${app}price-sales">                <span class="${app}item-price">￥${price}</span>                <span class="${app}item-sales">销量:${commissionNum}</span>            </div>        </div>        <a data-stat= \'{"pid": "${numIid}", "pric": "${price}", "proPric": "${promoPrice}", "volum": "${commissionNum}", "level": "${creditGrade}", "mType": "${mType}"}\' href="${clickUrl}" target="_blank" title="${title}" class="J_alink TK-item-alink"></a>    </div></li>',
        "mlsmgj.detail.btn.similar": '<div id="${id}" class="${cls}" style="left:${left}px;top:${top}px"><a href="http://www.taotaosou.com/?utm_medium=ttk&utm_source=logo" target="_blank">汇海雷达</a></div>',
        "mlsmgj.list.box.body": '<ul class="${app}bd-tab">    <a href="http://www.taotaosou.com/?utm_medium=ttk&utm_source=logo" target="_blank" title="汇海雷达" id="${app}logo" class="${app}logo-tk"></a></ul><!--<a class="${app}close" href="javascript:;" title="关闭"></a>--><div class="${app}bd-loading">    <div class="${app}bd-load-wrap">        <span class="${app}bd-load-msg">汇海雷达正在为您搜索</span>    </div></div><div class="${app}bd-itemlist" style="display:none;">    <ul id="${app}list" class="${app}ul-list"></ul>    <ul id="J-${app}recon" class="${app}ul-list" style="display:none;"></ul>    <div class="${app}list-ft"> <a href="${more}" id="${app}move" class="${app}tag-move" target="_blank">查看更多</a>     </div></div> <i class="icons triangle-left-empty"> <i class="subicon"></i> </i>',
        "mlsmgj.list.box.container": '<div style="visibility:hidden;" id="${app}media">    <a href="" id="${app}source-product" target="_blank" class="${app}hidden"></a> <a href="#_" id="${app}button" target="_blank">相似宝贝</a>     <div class="${app}container" id="${app}con">        <div id="${app}bd" class="${app}bd">            <ul class="${app}bd-tab">                <a href="http://www.taotaosou.com/?utm_medium=ttk&utm_source=logo" target="_blank" title="汇海雷达" id="${app}logo" class="${app}logo-tk"></a>            </ul>            <!--<a class="${app}close" href="javascript:;" title="关闭"></a>-->            <div class="${app}bd-loading">                <div class="${app}bd-load-wrap">                    <span class="${app}bd-load-msg">汇海雷达正在为您搜索</span>                </div>            </div>            <div class="${app}bd-itemlist" style="display:none;">                <ul id="${app}list" class="${app}ul-list"></ul>                <ul id="J-${app}recon" class="${app}ul-list" style="display:none;"></ul>                <div class="${app}list-ft"> <a href="${more}" id="${app}move" class="${app}tag-move" target="_blank">查看更多</a>                 </div>            </div> <i class="icons triangle-left-empty"> <i class="subicon"></i> </i>        </div>    </div></div>',
        "mlsmgj.list.box.nofound": '<div class="${app}no-found-box">    <ul class="${app}bd-tab">        <a href="http://www.taotaosou.com/?utm_medium=ttk&utm_source=logo" target="_blank" title="汇海雷达" id="${app}logo" class="${app}logo-tk"></a>        <a class="${app}close" href="javascript:;" title="关闭"></a>    </ul>    <div id="${app}404">        <div id="${app}404-hd">            <div class="${app}bg-img">                <span></span>            </div>        </div>        {{if siAdList}}            <div id="${app}404-bd">                <a href="${siAdList[0].url}" class="${app}404-click" target="_blank" id="${app}404-media">                    <img src="${siAdList[0].img}" alt="${siAdList[0].title}" height="80" width="80">                    <img src="${siAdList[1].img}" alt="${siAdList[1].title}" height="80" width="80">                    <img src="${siAdList[2].img}" alt="${siAdList[2].title}" height="80" width="80">                </a>                <div id="${app}404-desc">                    <a href="${siAdList[0].url}" target="_blank" class="${app}404-click" id="${app}404-desc-title">${siAdList[0].title}</a>                    <a href="${siAdList[0].url}" target="_blank" class="${app}404-click" id="${app}404-desc-con">${siAdList[0].desc.slice(0,27)}...&gt;&gt;</a>                 </div>            </div>        {{/if}}    </div> <i class="icons triangle-left-empty"> <i class="subicon"></i> </i></div>',
        "mlsmgj.list.box.product": '<li>    <div class="${app}item TK-tabs-panel">        <div class="${app}item-img">            <a title="${title}" data-stat= \'{"pid": "${numIid}", "pric": "${price}", "proPric": "${promoPrice}", "volum": "${commissionNum}", "level": "${creditGrade}", "mType": "${mType}"}\' class="J_alink" href="${clickUrl}" target="_blank">                <img src="${img}" alt="${title}">            </a>            {{if isSource}}                <span class="${app}tag-source"></span>            {{/if}}        </div>        <div class="${app}item-info">            <h3 class="${app}item-title"><a class="J_alink" data-stat= \'{"pid": "${numIid}", "pric": "${price}", "proPric": "${promoPrice}", "volum": "${commissionNum}", "level": "${creditGrade}", "mType": "${mType}"}\' href="${clickUrl}" target="_blank" title="${title}">${title}</a>            </h3>            <div class="${app}tag-com">                <a data-stat= \'{"pid": "${numIid}", "pric": "${price}", "proPric": "${promoPrice}", "volum": "${commissionNum}", "level": "${creditGrade}", "mType": "${mType}"}\' target="_blank" href="${clickUrl}" class="${app}item-tags">                    {{if tag}}                        {{each tag}}                            <span class="${app}tag-${$value} J-${app}tag-item"id="">${$value}</span>                        {{/each}}                    {{/if}}                </a>                {{if isCom}}                    <span class="TK-item-com">                        {{if com}}                            ${com}条评论                        {{/if}}                    </span>                {{else}}                    <a target="_blank" data-stat= \'{"pid": "${numIid}", "pric": "${price}", "proPric": "${promoPrice}", "volum": "${commissionNum}", "level": "${creditGrade}", "mType": "${mType}"}\' href="${comUrl}" class="J_comlink TK-item-com">                        {{if com}}                            ${com}条评论                        {{/if}}                    </a>                {{/if}}            </div>            <div class="${app}price-sales">                <span class="${app}item-price">￥${price}</span>                <span class="${app}item-sales">销量:${commissionNum}</span>            </div>        </div>        <a data-stat= \'{"pid": "${numIid}", "pric": "${price}", "proPric": "${promoPrice}", "volum": "${commissionNum}", "level": "${creditGrade}", "mType": "${mType}"}\' href="${clickUrl}" target="_blank" title="${title}" class="J_alink TK-item-alink"></a>    </div></li>',
        "mlsmgj.list.box.retab": '<a href="http://www.taotaosou.com/?utm_medium=ttk&utm_source=logo" target="_blank" title="汇海雷达" id="${app}logo" class="${app}logo-tk"></a><div class="${app}tab-li">    <li class="${app}tab-frist"><a id="J-${app}same" class="${app}active" href="javascript:;">推荐</a></li></div>',
        "mlsmgj.list.box.tab": '<a href="http://www.taotaosou.com/?utm_medium=ttk&utm_source=logo" target="_blank" title="汇海雷达" id="${app}logo" class="${app}logo-tk"></a><div class="${app}tab-li">    <li class="${app}tab-frist"><a id="J-${app}same" class="${app}active" href="javascript:;">比价</a></li></div>',
        "remind.qutu": '<div class="cqol">    <div class="TK-mind-sub">        <div class="TK-mind-sub-nav">            <div class="TK-mind-sub-remind J_TK-mind-sub-remind">                <i class="TK-mind-sub-star"></i>                <span>降价提醒</span>            </div>            <div class="TK-mind-sub-qutu">                <i class="TK-mind-sub-icon"></i>                <span class="J-TK-mind-sub-icon-text">价格曲线</span>            </div>            <div class="TK-mind-sub-under">                <span class="TK-mind-sub-under-text">同款最低价</span>                <span class="TK-mind-sub-under-price J-TK-mind-sub-under-price"><em>&yen</em>156</span>            </div>        </div>        <div class="TK-qutu-sub-warp">            <i class="TK-qutu-sub-pointer"></i>            <div class="TK-qutu-sub-con J-TK-qutu-sub-con">                <div class="TK-qutu-sub-price">                </div>                <div class="TK-qutu-sub-data">                </div>                <canvas id="TK-canvas-sub-base" class="TK-canvas-sub-base" style="width: 440px; height: 250px;" width="880" height="500"></canvas>                <canvas id="TK-canvas-sub-layout" class="TK-canvas-sub-layout" style="width: 440px; height: 250px;" width="880" height="500"></canvas>                <div class="TK-qutu-sub-msg">                    <div class="TK-qutu-sub-msg-wrap">                    </div>                </div>            </div>        </div>    </div></div>',
        "tbtm.detail.box": '<div class="${app}container ${host}" id="${app}con">    <div class="${app}hd"><a href="http://www.taotaosou.com/?utm_medium=ttk&utm_source=logo" class="${app}logo"                             target="_blank" title="汇海雷达"></a> {{if noFound}} <p class="${app}no-product">        未找到相似的宝贝，可能的原因？</p> {{else}}        <div class="${app}tabs-bar">            <div class="${app}tabs-button">                <div class="${app}tabs-button-con">比价</div>            </div>            <!--<div class="${app}tabs-button J-${app}re">                <div class="${app}tabs-button-con">精品团</div>            </div>-->        </div>        {{/if}}    </div>    {{if load}}    <div class="${app}loading">载入中...</div>    {{else}} {{if noFound}} {{else}}    <div class="${app}bd" data-status="close">        <div class="${app}tabs-body">            <div class="${app}tabs-panel ${app}tabs-panel-selected"><a href="${more}" class="${app}more" target="_blank"                                                                       title="点击查看更多同款商品">查看更多</a></div>            <div id="J-${app}recon" class="${app}tabs-panel ${app}tuan-panel"><a href="${more}" class="${app}more" target="_blank"                                                                title="点击查看更多同款商品">查看更多</a></div>        </div>    </div>    <div class="${app}close" title="收起同款商品">关闭</div>    {{/if}} {{/if}}    <div class="${app}lock-ui">        <div class="${app}lock-ui-con">            <div>正在帮您优化性价比最高的商品</div>        </div>    </div></div>',
        "tbtm.detail.box.nofound": '<div class="${app}container ${host}" id="${app}con">    <div class="${app}hd"><a href="http://www.taotaosou.com/?utm_medium=ttk&utm_source=logo" class="${app}logo"                             target="_blank" title="汇海雷达"></a>        <div class="${app}tabs-bar">            <div class="${app}tabs-button">                <div class="${app}tabs-button-con">比价</div>            </div>            <!--<div class="${app}tabs-button">                <div class="${app}tabs-button-con">精品团</div>            </div>-->        </div>    </div>    {{if load}}    <div class="${app}loading">载入中...</div>    {{else}}{{if noFound}}{{else}}    <div class="${app}bd" data-status="close">        <div id="${app}404-same">            <div style="margin-left: 115px;" id="${app}404-same-hd"></div>            <!--<div id="${app}404-same-land"></div>            <div id="${app}404-same-bd">                <div id="${app}404-same-title">只要9.9 <span class="${app}404-same-icon"></span></div>            </div>-->        </div>    </div>    <div class="${app}close" title="收起同款商品">关闭</div>    {{/if}}{{/if}}</div>',
        "tbtm.detail.box.nofound.item": '<a href="${itemUrl}" class="${app}404-same-item">${title1} <em class="${app}404-same-sale">${title2}</em></a>',
        "tbtm.detail.box.product": '<div class="${app}item" data-id="${numIid}">    <a data-stat=\'{"iscom":"${iscom}","pid":"${numIid}","pric":"${price}","proPric":"${promoPrice}","volum":"${commissionNum}","level":"${creditGrade}","com":"${com}","mType": "${mType}"}\' class="${app}media ${app}detail" href="${clickUrl}" target="_blank">        <img src="${img}" alt="${title}">    </a>    <div class="${app}price-container">        <div class="${app}unit">￥</div>        <div class="${app}price">${price}</div>    </div>    {{if oriPrice}}        <div class="${app}price-del">            <del>￥${oriPrice}</del>        </div>    {{/if}}    <div class="${app}tag">        {{if tag}}            {{each tag}}            <div class="${app}tag-${$value} ${app}tag-item J-${app}tag-item">${$value}</div>            {{/each}}        {{/if}}    </div>    {{if commissionNum}}        <div class="${app}clear ${app}num">销量            <div class="${app}sum">${commissionNum}</div>        </div>    {{/if}}</div>',
        "tbtm.detail.btn.dapei": '{{if tm}}  <a href="${url}" id="${app}dapei" class="${app}daipei-tm-alink" target="_blank">明天穿什么</a>{{else}}  <li>      <a href="${url}" id="${app}dapei" class="${app}daipei-tb-alink" target="_blank">          <em class="${app}daipei-tb-icon"></em>          <span style="padding-left:20px; padding-right: 0;" class="${app}daipei-tb-bg">明天穿什么</span>      </a>  </li>{{/if}}',
        "tbtm.detail.btn.more": '<a href="${more}" class="${app}more" target="_blank" title="点击查看更多同款商品">查看更多</a>',
        "tbtm.detail.btn.similar": '<div id="${id}" class="${cls}" style="left:${left}px;top:${top}px">相似宝贝</div>',
        "tbtm.detail.magnifier": '<div class="${app}mangnifier">    <div class="${app}mangnifier-media">        <a href="${url}" target="_blank" data-stat="${stat}" class="${app}detail">            <img src="${img}">        </a>    </div>    <a href="${url}" target="_blank" data-stat="${stat}" class="${app}detail">${title}</a></div>',
        "tbtm.detail.recom": '<div id="lds_rcmd_hbox" class="hh">    <div id="lds_rcmd_rltv">        <div id="lds_nav_left"><a href="javascript:;" class="lds_nav lds_nav_left" onfocus="this.blur();">向左翻页</a>        </div>        <div id="lds_nav_right"><a href="javascript:;" class="lds_nav lds_nav_right" onfocus="this.blur();">向右翻页</a>        </div>        <div class="lds_rcmd_title">找了又找</div>        <div class="lds_rcmd_box">            <div class="lds_rcmd_sonbox clearfix">                <div id="lds_rcmd_wrap"></div>            </div>            <ul class="lds_rcmd_ctrol" id="lds_rcmd_ctrol"></ul>        </div>    </div>    <div id="lds_rcmd_cursor" class="lds_rcmd_slideup"></div></div>',
        "tbtm.list.box.body": '<!-- <ul class="${app}bd-tab"><a href="http://www.taotaosou.com/?utm_medium=ttk&utm_source=logo" target="_blank"                            title="汇海雷达" id="${app}logo" class="${app}logo-tk"></a></ul> --><div class="${app}bd-loading"><div class="${app}bd-load-wrap"><span class="${app}bd-load-msg"> 汇海雷达正在为您搜索 </span></div></div><div class="${app}bd-itemlist" style="display:none;"><div class="TTS-qutu-wrap"></div><div class="${app}list-ft"><span class="${app}list-title">同款推荐</span><a href="${more}" id="${app}move" class="${app}tag-move" target="_blank">查看更多>></a></div><ul id="${app}biaolei-list" class="${app}ul-biaolei-list"></ul><ul id="${app}list" class="${app}ul-list"></ul><ul id="J-${app}recon" class="${app}ul-list ${app}tuan-list" style="display:none;"></ul></div><i class="icons triangle-left-empty"> <i class="subicon"></i> </i>',
        "tbtm.list.box.container": '<div style="visibility:hidden;" id="${app}media"><a id="${app}source-product" target="_blank" class="${app}hidden"> </a> <a id="${app}button" target="_blank" style="cursor: pointer;"></a><div class="${app}container ${host}" id="${app}con"><div id="${app}bd" class="${app}bd"><!-- <ul class="${app}bd-tab"><a href="http://www.taotaosou.com/?utm_medium=ttk&utm_source=logo"                                        target="_blank" title="汇海雷达" id="${app}logo" class="${app}logo-tk"></a>            </ul>--><div class="${app}bd-loading"><div class="${app}bd-load-wrap"><span class="${app}bd-load-msg"> 汇海雷达正在为您搜索 </span></div></div><div class="${app}bd-itemlist" style="display:none;"><div class="TTS-qutu-wrap"></div><div class="${app}list-ft"><span class="${app}list-title">同款推荐</span><a href="${more}" id="${app}move" class="${app}tag-move" target="_blank">查看更多>></a></div><ul id="${app}biaolei-list" class="${app}ul-biaolei-list"></ul><ul id="${app}list" class="${app}ul-list"></ul><ul id="J-${app}recon" class="${app}ul-list ${app}tuan-list" style="display:none;"></ul></div><i class="icons triangle-left-empty"> <i class="subicon"></i> </i></div></div></div>',
        "tbtm.list.box.nofound": '<div class="${app}no-found-box">    <ul class="${app}bd-tab"><a href="http://www.taotaosou.com/?utm_medium=ttk&utm_source=logo" target="_blank"                                title="汇海雷达" id="${app}logo" class="${app}logo-tk"></a>    </ul>    <div id="${app}404">        <div id="${app}404-hd">            <div class="${app}bg-img" style="border: none;"><span></span></div>        </div>        <!--{{if siAdList}}        <div id="${app}404-bd">            <div>                <a href="${siAdList[0].url}" class="${app}404-click" target="_blank">                    <img src="${siAdList[0].img}" alt="${siAdList[0].title}" height="80" width="80">                </a>                <a href="${siAdList[1].url}" class="${app}404-click" target="_blank">                    <img src="${siAdList[1].img}" alt="${siAdList[1].title}" height="80" width="80">                </a>                <a href="${siAdList[2].url}" class="${app}404-click" target="_blank">                    <img src="${siAdList[2].img}" alt="${siAdList[2].title}" height="80" width="80">                </a>            </div>            <div id="${app}404-desc">                <a href="${siAdList[0].url}" target="_blank" class="${app}404-click" id="${app}404-desc-title">${siAdList[0].title}</a>                <a href="${siAdList[0].url}" target="_blank" class="${app}404-click" id="${app}404-desc-con">${siAdList[0].desc.slice(0,27)}...&gt;&gt;</a>            </div>        </div>        {{/if}}-->    </div>    <a class="${app}close" href="javascript:;" title="关闭"></a>    <i class="icons triangle-left-empty"> <i            class="subicon"></i>    </i></div>',
        "tbtm.list.box.product": '<li><div class="${app}item TK-tabs-panel"><div class="${app}item-img"><a title="${title}" data-stat=\'{"pid": "${numIid}", "pric": "${promoPrice}", "proPric": "${promoPrice}", "volum": "${commissionNum}", "level": "${creditGrade}", "mType": "${mType}"}\' class="J_alink" href="${clickUrl}" target="_blank"><img src="${img}" width="70" height="70" alt="${title}"></a>{{if isSource}}<span class="${app}tag-source"></span>{{/if}}</div><a href="${clickUrl}" target="_blank"><div class="TK-title">${title}</div><div class="${app}item-info"><div class="${app}price-sales"><span class="${app}item-price"><i>￥</i>${promoPrice}</span> {{if minPrice}}<span class="${app}item-min">最低价</span>{{/if}} {{if sales}}<span class="${app}item-sales">销量:${sales}</span>{{/if}}</div><div class="${app}tag-com">{{if webSiteTitle}}<span class="src-${webSite} src-icon ${app}tag-web">${webSiteTitle}</span>{{/if}} {{if sales}}{{else}}{{if isCom}}<span class="TK-item-com">{{if com}}${com}条评论{{/if}}</span>{{else}}<a target="_blank" data-stat=\'{"pid": "${numIid}", "pric": "${promoPrice}", "proPric": "${promoPrice}", "volum": "${commissionNum}", "level": "${creditGrade}", "mType": "${mType}"}\'href="${comUrl}" class="J_comlink TK-item-com">{{if com}}${com}条评论            {{/if}}            </a>            {{/if}}            {{/if}} </div></div><a data-stat=\'{"pid": "${numIid}", "pric": "${promoPrice}", "proPric": "${promoPrice}", "volum": "${commissionNum}", "level": "${creditGrade}", "mType": "${mType}"}\' href="${clickUrl}" target="_blank" title="${title}" class="J_alink TK-item-alink"></a></div></li>',
        "tbtm.list.box.retab": '<a href="http://www.taotaosou.com/?utm_medium=ttk&utm_source=logo" target="_blank" title="汇海雷达" id="${app}logo" class="${app}logo-tk"></a><div class="${app}tab-li"><li class="${app}tab-frist"><a id="J-${app}same" class="${app}active" href="javascript:;">推荐</a></li><!--<li><a id="J-${app}re" class="" href="javascript:;">精品团</a></li>--></div>',
        "tbtm.list.box.tab": '<a href="http://www.taotaosou.com/?utm_medium=ttk&utm_source=logo" target="_blank" title="汇海雷达" id="${app}logo" class="${app}logo-tk"></a><div class="${app}tab-li"><li class="${app}tab-frist"><a id="J-${app}same" class="${app}active" href="javascript:;">比价</a></li><!--<li><a id="J-${app}re" class="" href="javascript:;">精品团</a></li>--></div>',
        "tbtm.list.tuan.product": '<li>    <div class="${app}item TK-tabs-panel">        <div class="${app}item-img"><a title="${title}"                                       data-stat=\'{"pid": "${id}", "pric": "${price}", "proPric": "${promoPrice}", "volum": "${commissionNum}", "level": "${creditGrade}", "mType": "${mType}"}\'                                       class="J_alink" href="${clickUrl}" target="_blank"><img src="${img}"                                                                                               alt="${title}"></a>{{if            isSource}}<span class="${app}tag-source"></span>{{/if}}        </div>        <div class="${app}item-info"><h3 class="${app}item-title"><a class="J_alink"                                                                     data-stat=\'{"pid": "${id}", "pric": "${price}", "proPric": "${promoPrice}", "volum": "${commissionNum}", "level": "${creditGrade}", "mType": "${mType}"}\'                                                                     href="${clickUrl}" target="_blank"                                                                     title="${title}">${title}</a></h3>            <div class="${app}tag-com"><a                    data-stat=\'{"pid": "${id}", "pric": "${price}", "proPric": "${promoPrice}", "volum": "${commissionNum}", "level": "${creditGrade}", "mType": "${mType}"}\'                    target="_blank" href="${clickUrl}" class="${app}item-tags">{{if tag}}{{each tag}}<span                    class="${app}tag-${$value} J-${app}tag-item" id="">${$value}</span>{{/each}}{{/if}}</a>{{if                isCom}}<span class="TK-item-com">{{if com}}${com}条评论{{/if}}</span>{{else}}<a target="_blank"                                                                                             data-stat=\'{"pid": "${id}", "pric": "${price}", "proPric": "${promoPrice}", "volum": "${commissionNum}", "level": "${creditGrade}", "mType": "${mType}"}\'                                                                                             href="${comUrl}"                                                                                             class="J_comlink TK-item-com">{{if                    com}}${com}条评论{{/if}}</a>{{/if}}            </div>            <div class="${app}price-sales"><span class="${app}item-price">￥${price}</span><span class="${app}item-tuan">${zhekou}</span>            </div>        </div>        <a data-stat=\'{"pid": "${id}", "pric": "${price}", "proPric": "${promoPrice}", "volum": "${commissionNum}", "level": "${creditGrade}", "mType": "${mType}"}\'           href="${clickUrl}" target="_blank" title="${title}" class="J_alink TK-item-alink"></a></div></li>'
    }
}),
__tk__define("templates.jst", ["./lib/handlebars"],
function(a, b, c) {
    var d = a("./lib/handlebars");
    return this.JST = this.JST || {},
    this.JST["bijia/banner"] = d.template(function(a, b, c, d, e) {
        function f(a, b) {
            var d, e = "";
            return e += '\n    <a target="_blank" title="',
            (d = c.title) ? d = d.call(a, {
                hash: {},
                data: b
            }) : (d = a.title, d = typeof d === i ? d.apply(a) : d),
            e += j(d) + '" class="TTS-right TTS-banner-alink" href="',
            (d = c.href) ? d = d.call(a, {
                hash: {},
                data: b
            }) : (d = a.href, d = typeof d === i ? d.apply(a) : d),
            e += j(d) + '">\n        <img src="',
            (d = c.media) ? d = d.call(a, {
                hash: {},
                data: b
            }) : (d = a.media, d = typeof d === i ? d.apply(a) : d),
            e += j(d) + '" width="150" height="70"/>\n    </a>\n    '
        }
        this.compilerInfo = [4, ">= 1.0.0"],
        c = this.merge(c, a.helpers),
        e = e || {};
        var g, h = "",
        i = "function",
        j = this.escapeExpression,
        k = this;
        return h += '<div class="TTS-banner">\n    ',
        g = c.each.call(b, b.list, {
            hash: {},
            inverse: k.noop,
            fn: k.program(1, f, e),
            data: e
        }),
        (g || 0 === g) && (h += g),
        h += "\n</div>"
    }),
    this.JST["bijia/banner.mid"] = d.template(function(a, b, c, d, e) {
        return this.compilerInfo = [4, ">= 1.0.0"],
        c = this.merge(c, a.helpers),
        e = e || {},
        '<div class="showTab">\n  <div class="juzi_bijia juzi_bijia_active" id="bijia_bijia">比价</div>\n  <div class="juzi_recommend">推荐</div>\n  <div class="juzi-tts_mid_icon placeholder"></div>\n</div>\n<div class="juzi_bijia_product"></div>'
    }),
    this.JST["bijia/configure"] = d.template(function(a, b, c, d, e) {
        function f(a, b) {
            return "close"
        }
        function g(a, b) {
            return "open"
        }
        function h(a, b) {
            return "1"
        }
        function i(a, b) {
            return "0"
        }
        this.compilerInfo = [4, ">= 1.0.0"],
        c = this.merge(c, a.helpers),
        e = e || {};
        var j, k = "",
        l = this;
        return k += '<div class="TK_configure-wrap TK_hide">\n  <div class="TK_configure_top">\n    <!--div class="bijia-configure_icon TK_configure_icon TK_left"></div-->\n    <div class="TK_top_content TK_left"><i class="bijia-TTS_ditong_config"></i>汇海雷达购物助手自定义设置</div>\n    <a class="bijia-TTS_ditong_close TK_configure_close TK_left" href="javascript:void(0)"></a>\n  </div>\n  <!--div class="TK_configure_middle">\n    <div class="TK_content_wrap TK_left">\n      <div class="TK_content_title">弹窗内容</div>\n      <div class="TK_content_content">将全网优质购物促销的商品推荐给您</div>\n    </div>\n    <div class="TK_close_wrap TK_left ',
        j = c["if"].call(b, b.pop, {
            hash: {},
            inverse: l.program(3, g, e),
            fn: l.program(1, f, e),
            data: e
        }),
        (j || 0 === j) && (k += j),
        k += '" data-name="pop" data-val="',
        j = c["if"].call(b, b.pop, {
            hash: {},
            inverse: l.program(7, i, e),
            fn: l.program(5, h, e),
            data: e
        }),
        (j || 0 === j) && (k += j),
        k += '">\n      <a id="TK_content_open" href="javascript:void(0)">已开启</a>\n      <a id="TK_content_close" href="javascript:void(0)">已关闭</a>\n      <div class="bijia-taggle_btn TK_content_tab"></div>\n    </div>\n  </div-->\n  <div class="TK_configure_bottom">\n    <div class="TK_recommend_wrap TK_left">\n      <!--div class="TK_recommend_title">底通推荐</div-->\n      <div class="TK_recommend_content">展示底通品牌广告</div>\n    </div>\n    <div class="TK_close_wrap TK_left ',
        j = c["if"].call(b, b.ditong, {
            hash: {},
            inverse: l.program(3, g, e),
            fn: l.program(1, f, e),
            data: e
        }),
        (j || 0 === j) && (k += j),
        k += '" data-name="ditong" data-val="',
        j = c["if"].call(b, b.ditong, {
            hash: {},
            inverse: l.program(7, i, e),
            fn: l.program(5, h, e),
            data: e
        }),
        (j || 0 === j) && (k += j),
        k += '">\n      <a id="TK_recommend_open">已开启</a>\n      <a id="TK_recommend_close">已关闭</a>\n      <div class="TK_recommend_tab"></div>\n    </div>\n  </div>\n</div>'
    }),
    this.JST["bijia/db11banner"] = d.template(function(a, b, c, d, e) {
        this.compilerInfo = [4, ">= 1.0.0"],
        c = this.merge(c, a.helpers),
        e = e || {};
        var f, g = "",
        h = "function",
        i = this.escapeExpression;
        return g += '<a class="TK_banner_wrap" href="',
        (f = c.href) ? f = f.call(b, {
            hash: {},
            data: e
        }) : (f = b.href, f = typeof f === h ? f.apply(b) : f),
        g += i(f) + '" title="',
        (f = c.title) ? f = f.call(b, {
            hash: {},
            data: e
        }) : (f = b.title, f = typeof f === h ? f.apply(b) : f),
        g += i(f) + '" target="_blank" style="background-color:',
        (f = c.bgc) ? f = f.call(b, {
            hash: {},
            data: e
        }) : (f = b.bgc, f = typeof f === h ? f.apply(b) : f),
        g += i(f) + '">\n  <img src="',
        (f = c.media) ? f = f.call(b, {
            hash: {},
            data: e
        }) : (f = b.media, f = typeof f === h ? f.apply(b) : f),
        g += i(f) + '" alt="',
        (f = c.title) ? f = f.call(b, {
            hash: {},
            data: e
        }) : (f = b.title, f = typeof f === h ? f.apply(b) : f),
        g += i(f) + '"/>\n  <a href="javascript:void(0)" class="TK_banner_close"></a>\n</a>'
    }),
    this.JST["bijia/home.list.biaolei"] = d.template(function(a, b, c, d, e) {
        function f(a, b) {
            var d, e = "";
            return e += "\n  ",
            d = c["if"].call(a, a.isshow, {
                hash: {},
                inverse: m.noop,
                fn: m.program(2, g, b),
                data: b
            }),
            (d || 0 === d) && (e += d),
            e += "\n"
        }
        function g(a, b) {
            var d, e = "";
            return e += '\n    <li>\n      <a href="',
            (d = c.clickUrl) ? d = d.call(a, {
                hash: {},
                data: b
            }) : (d = a.clickUrl, d = typeof d === k ? d.apply(a) : d),
            e += l(d) + '" target="_blank">\n         <div class="TTS-website">\n             <span class="',
            (d = c.webSiteLogo) ? d = d.call(a, {
                hash: {},
                data: b
            }) : (d = a.webSiteLogo, d = typeof d === k ? d.apply(a) : d),
            e += l(d) + '"></span>',
            (d = c.webSiteTitle) ? d = d.call(a, {
                hash: {},
                data: b
            }) : (d = a.webSiteTitle, d = typeof d === k ? d.apply(a) : d),
            e += l(d) + '\n          </div>\n            <div class="TTS-product-count">',
            (d = c.count) ? d = d.call(a, {
                hash: {},
                data: b
            }) : (d = a.count, d = typeof d === k ? d.apply(a) : d),
            e += l(d) + '件同款</div>\n          <div class="TTS-lowestPrice"> \n                ',
            d = c["if"].call(a, a.lowestPriceFlag, {
                hash: {},
                inverse: m.noop,
                fn: m.program(3, h, b),
                data: b
            }),
            (d || 0 === d) && (e += d),
            e += "\n             ￥",
            (d = c.lowestPrice) ? d = d.call(a, {
                hash: {},
                data: b
            }) : (d = a.lowestPrice, d = typeof d === k ? d.apply(a) : d),
            e += l(d) + '\n         </div>\n            <div class="TTS-biaolei-more" target="_blank">>></div>\n        </a>\n  </li>\n '
        }
        function h(a, b) {
            return "\n                 <span>最低价</span>\n              "
        }
        this.compilerInfo = [4, ">= 1.0.0"],
        c = this.merge(c, a.helpers),
        e = e || {};
        var i, j = "",
        k = "function",
        l = this.escapeExpression,
        m = this;
        return i = c.each.call(b, b.list, {
            hash: {},
            inverse: m.noop,
            fn: m.program(1, f, e),
            data: e
        }),
        (i || 0 === i) && (j += i),
        j += "\n"
    }),
    this.JST["bijia/home.list"] = d.template(function(a, b, c, d, e) {
        function f(a, b) {
            var d, e, f, i = "";
            return i += "\n        ",
            f = {
                hash: {},
                inverse: n.program(4, h, b),
                fn: n.program(2, g, b),
                data: b
            },
            d = c.lengthLt || a.lengthLt,
            e = d ? d.call(a, a.sameList, 0, f) : o.call(a, "lengthLt", a.sameList, 0, f),
            (e || 0 === e) && (i += e),
            i += "\n      "
        }
        function g(a, b) {
            var d, e = "";
            return e += '\n          <a class="TTS-bijia-more-btn TTS-left" href=',
            (d = c.more) ? d = d.call(a, {
                hash: {},
                data: b
            }) : (d = a.more, d = typeof d === l ? d.apply(a) : d),
            e += m(d) + ' target="_blank" data-tts-log="Bottomtab_group_more_click"></a>\n        '
        }
        function h(a, b) {
            var d, e, f, g = "";
            return g += "\n          ",
            f = {
                hash: {},
                inverse: n.noop,
                fn: n.program(5, i, b),
                data: b
            },
            d = c.lengthLt || a.lengthLt,
            e = d ? d.call(a, a.similarList, 0, f) : o.call(a, "lengthLt", a.similarList, 0, f),
            (e || 0 === e) && (g += e),
            g += "\n        "
        }
        function i(a, b) {
            var d, e = "";
            return e += '\n            <a class="TTS-bijia-more-btn TTS-left" href=',
            (d = c.more) ? d = d.call(a, {
                hash: {},
                data: b
            }) : (d = a.more, d = typeof d === l ? d.apply(a) : d),
            e += m(d) + ' target="_blank" data-tts-log="Bottomtab_recom_more_click"></a>\n          '
        }
        this.compilerInfo = [4, ">= 1.0.0"],
        c = this.merge(c, a.helpers),
        e = e || {};
        var j, k = "",
        l = "function",
        m = this.escapeExpression,
        n = this,
        o = c.helperMissing;
        return k += '<div id="TTS_bijia_wrap" class="TTS_bijia_wrap ',
        (j = c.host) ? j = j.call(b, {
            hash: {},
            data: e
        }) : (j = b.host, j = typeof j === l ? j.apply(b) : j),
        k += m(j) + '">\n  <div class="TTS_logo_bijia bijia-TTS_ditong_on TTS-left TTS-bijia-logo-bg">\n      <a href="http://un.taotaosou.com" target="_blank" class="TTS-logo-a" style="display: block;width: 70px;height: 70px;"></a>\n      <div class="TTS-mune">\n        <a href="http://www.taotaosou.com/" target="_blank" class="TTS_mainUrl">主站</a> \n        <div id="TTS-config" class="TTS-config"><span class="TTS-config-text">设置</span></div>\n        <a href="http://www.taotaosou.com/service.html" target="_blank" class="TTS_mainUrl">意见反馈</a>\n        <a href="http://un.taotaosou.com/register.html" target="_blank" class="TTS_yijianUrl">卖家入驻</a>\n      </div>\n  </div>\n  <div class="TTS-products-wrap TTS-left">\n    <div class="TTS-list-left-wrap TTS-left">\n      <div class="TTS-list-left TTS-left"></div>\n      ',
        j = c["if"].call(b, b.more, {
            hash: {},
            inverse: n.noop,
            fn: n.program(1, f, e),
            data: e
        }),
        (j || 0 === j) && (k += j),
        k += '\n    </div>\n  </div>\n  <a class="TTS-bijia-min-btn bijia-btn bijia-TTS_ditong_close"></a>\n  <div class="TTS-banner-wrap TTS-right">\n  </div>\n  <div class="TTS-list-right-wrap TTS-tuan TTS-right">\n    <div class="TTS-list-right TTS-tumeiti TTS-left"></div>\n  </div>\n</div>'
    }),
    this.JST["bijia/home.list.item"] = d.template(function(a, b, c, d, e) {
        function f(a, b) {
            var d, e, f, l = "";
            return l += '\n    <li class="',
            f = {
                hash: {},
                inverse: n.program(4, h, b),
                fn: n.program(2, g, b),
                data: b
            },
            d = c.lt || a.lt,
            e = d ? d.call(a, (d = b, null == d || d === !1 ? d: d.index), 7, f) : o.call(a, "lt", (d = b, null == d || d === !1 ? d: d.index), 7, f),
            (e || 0 === e) && (l += e),
            l += " ",
            f = {
                hash: {},
                inverse: n.noop,
                fn: n.program(6, i, b),
                data: b
            },
            d = c.is || a.is,
            e = d ? d.call(a, (d = b, null == d || d === !1 ? d: d.index), 7, f) : o.call(a, "is", (d = b, null == d || d === !1 ? d: d.index), 7, f),
            (e || 0 === e) && (l += e),
            e = c["if"].call(a, a.isMin, {
                hash: {},
                inverse: n.noop,
                fn: n.program(8, j, b),
                data: b
            }),
            (e || 0 === e) && (l += e),
            l += '">\n      <a class="TTS-list-product-img" href="',
            (e = c.clickUrl) ? e = e.call(a, {
                hash: {},
                data: b
            }) : (e = a.clickUrl, e = typeof e === p ? e.apply(a) : e),
            l += q(e) + '" target="_blank">\n        <img class="tk" src=',
            (e = c.ttsPicUrl) ? e = e.call(a, {
                hash: {},
                data: b
            }) : (e = a.ttsPicUrl, e = typeof e === p ? e.apply(a) : e),
            l += q(e) + '>\n      </a>\n\n      <p class="TTS-list-product-detail TTS-list-product-juxiao">\n        <span class="src-price"><em>&yen;</em>',
            (e = c.promoPrice) ? e = e.call(a, {
                hash: {},
                data: b
            }) : (e = a.promoPrice, e = typeof e === p ? e.apply(a) : e),
            l += q(e) + "</span>\n      </p>\n      ",
            e = c["if"].call(a, a.isMin, {
                hash: {},
                inverse: n.noop,
                fn: n.program(10, k, b),
                data: b
            }),
            (e || 0 === e) && (l += e),
            l += "\n    </li>\n  "
        }
        function g(a, b) {
            return "TTS-list-left-head"
        }
        function h(a, b) {
            return "TTS-list-left-tail"
        }
        function i(a, b) {
            return "TTS-list-left-last"
        }
        function j(a, b) {
            return "TTS-list-lowestPrice"
        }
        function k(a, b) {
            return '\n        <div class="tip-lowestPrice">\n          <span>最低价</span>\n          <em class="bijia-arrow-down"></em>\n        </div>\n      '
        }
        this.compilerInfo = [4, ">= 1.0.0"],
        c = this.merge(c, a.helpers),
        e = e || {};
        var l, m = "",
        n = this,
        o = c.helperMissing,
        p = "function",
        q = this.escapeExpression;
        return m += '<span class="bijia-like-title TTS-left"></span>\n\n<ul class="TTS-left" data-tts-log="Bottomtab_',
        (l = c.laiyuan) ? l = l.call(b, {
            hash: {},
            data: e
        }) : (l = b.laiyuan, l = typeof l === p ? l.apply(b) : l),
        m += q(l) + '_click">\n  ',
        l = c.each.call(b, b.list, {
            hash: {},
            inverse: n.noop,
            fn: n.program(1, f, e),
            data: e
        }),
        (l || 0 === l) && (m += l),
        m += "\n</ul>"
    }),
    this.JST["bijia/home.list.pop"] = d.template(function(a, b, c, d, e) {
        function f(a, b) {
            return '"Bottomtab_group_magnify_click"'
        }
        function g(a, b) {
            var d, e = "";
            return e += " ",
            d = c["if"].call(a, a.isProList, {
                hash: {},
                inverse: n.program(6, i, b),
                fn: n.program(4, h, b),
                data: b
            }),
            (d || 0 === d) && (e += d),
            e
        }
        function h(a, b) {
            var d, e = "";
            return e += '"Bottomtab_',
            (d = c.isProList) ? d = d.call(a, {
                hash: {},
                data: b
            }) : (d = a.isProList, d = typeof d === l ? d.apply(a) : d),
            e += m(d) + '_magnify_click"'
        }
        function i(a, b) {
            return '"Bottomtab_recom_magnify_click"'
        }
        this.compilerInfo = [4, ">= 1.0.0"],
        c = this.merge(c, a.helpers),
        e = e || {};
        var j, k = "",
        l = "function",
        m = this.escapeExpression,
        n = this;
        return k += '<div class="TTS-bijia-pop TTS-bijia-juxiao-pop" data-tts-log=',
        j = c["if"].call(b, b.isSameList, {
            hash: {},
            inverse: n.program(3, g, e),
            fn: n.program(1, f, e),
            data: e
        }),
        (j || 0 === j) && (k += j),
        k += '>\n<i class="TTS-pointer bijia-TTS_icon_down"></i>\n<div class="TTS-product-img">\n  <a href=',
        (j = c.clickUrl) ? j = j.call(b, {
            hash: {},
            data: e
        }) : (j = b.clickUrl, j = typeof j === l ? j.apply(b) : j),
        k += m(j) + ' target="_blank"><img class="tk" src=',
        (j = c.ttsPicUrl) ? j = j.call(b, {
            hash: {},
            data: e
        }) : (j = b.ttsPicUrl, j = typeof j === l ? j.apply(b) : j),
        k += m(j) + '></a>\n</div>\n<div class="TTS-product-title">\n  <a href=',
        (j = c.clickUrl) ? j = j.call(b, {
            hash: {},
            data: e
        }) : (j = b.clickUrl, j = typeof j === l ? j.apply(b) : j),
        k += m(j) + ' target="_blank">',
        (j = c.title) ? j = j.call(b, {
            hash: {},
            data: e
        }) : (j = b.title, j = typeof j === l ? j.apply(b) : j),
        k += m(j) + '</a>\n</div>\n<p>\n  <span class="TTS-product-price"><em>&yen;</em>',
        (j = c.promoPrice) ? j = j.call(b, {
            hash: {},
            data: e
        }) : (j = b.promoPrice, j = typeof j === l ? j.apply(b) : j),
        k += m(j) + "</span>\n</p>\n</div>"
    }),
    this.JST["bijia/home.list.qutu"] = d.template(function(a, b, c, d, e) {
        return this.compilerInfo = [4, ">= 1.0.0"],
        c = this.merge(c, a.helpers),
        e = e || {},
        '<div class="cqols" id="TTK-sub-wrap">\n    <div class="TK-mind-sub">\n        <div class="TK-mind-sub-nav">\n            <div class="TK-mind-sub-qutu">\n            </div>\n        </div>\n        <div class="TK-qutu-sub-warp">\n            <div class="TK-qutu-sub-con J-TK-qutu-sub-con">\n                <div class="TK-qutu-sub-price">\n\n                </div>\n                <div class="TK-qutu-sub-data">\n\n                </div>\n                <canvas id="TK-canvas-sub-base" class="TK-canvas-sub-base" style="width: 440px; height: 250px;" width="880" height="500"></canvas>\n                <canvas id="TK-canvas-sub-layout" class="TK-canvas-sub-layout" style="width: 440px; height: 250px;" width="880" height="500"></canvas>\n                <div class="TK-qutu-sub-msg">\n                    <div class="TK-qutu-sub-msg-wrap">\n\n                    </div>\n                </div>\n            </div>\n        </div>\n    </div>\n</div>'
    }),
    this.JST["bijia/juxiao"] = d.template(function(a, b, c, d, e) {
        function f(a, b) {
            var d, e = "";
            return e += '\n    <li>\n      <a data-stat="',
            (d = c.stat) ? d = d.call(a, {
                hash: {},
                data: b
            }) : (d = a.stat, d = typeof d === i ? d.apply(a) : d),
            e += j(d) + '" class="TTS-list-product-img"\n         href="',
            (d = c.clickUrl) ? d = d.call(a, {
                hash: {},
                data: b
            }) : (d = a.clickUrl, d = typeof d === i ? d.apply(a) : d),
            e += j(d) + '"\n         target="_blank">\n        <img class="tk"\n             src="',
            (d = c.ttsPicUrl) ? d = d.call(a, {
                hash: {},
                data: b
            }) : (d = a.ttsPicUrl, d = typeof d === i ? d.apply(a) : d),
            e += j(d) + '">\n      </a>\n      <p class="TTS-list-product-detail">\n        <span class="src-price"><em>¥</em>',
            (d = c.promoPrice) ? d = d.call(a, {
                hash: {},
                data: b
            }) : (d = a.promoPrice, d = typeof d === i ? d.apply(a) : d),
            e += j(d) + "</span>\n      </p>\n    </li>\n    "
        }
        this.compilerInfo = [4, ">= 1.0.0"],
        c = this.merge(c, a.helpers),
        e = e || {};
        var g, h = "",
        i = "function",
        j = this.escapeExpression,
        k = this;
        return h += '<div class="TTK-juxiao-wrap">\n  <ul>\n    ',
        g = c.each.call(b, b.recomList, {
            hash: {},
            inverse: k.noop,
            fn: k.program(1, f, e),
            data: e
        }),
        (g || 0 === g) && (h += g),
        h += "\n  </ul>\n</div>"
    }),
    this.JST["bijia/list.qutu"] = d.template(function(a, b, c, d, e) {
        return this.compilerInfo = [4, ">= 1.0.0"],
        c = this.merge(c, a.helpers),
        e = e || {},
        '<div class="list_qutu TK-not-show-qutu" id="TTK-sub-wrap">\n    <div class="TK-header">价格趋势<em></em></div>\n    <div class="TK-mind-sub">\n        <div class="TK-qutu-sub-warp">\n            <div class="TK-qutu-sub-con J-TK-qutu-sub-con">\n                <div class="TK-qutu-sub-price">\n\n                </div>\n                <div class="TK-qutu-sub-data">\n\n                </div>\n                <canvas id="TK-canvas-sub-base" class="TK-canvas-sub-base" style="width: 280px; height: 130px;" width="560" height="260"></canvas>\n                <canvas id="TK-canvas-sub-layout" class="TK-canvas-sub-layout" style="width: 280px; height: 130px;" width="560" height="260"></canvas>\n                <div class="TK-qutu-sub-msg">\n                    <div class="TK-qutu-sub-msg-wrap">\n\n                    </div>\n                </div>\n            </div>\n             <div class="TK-prudct-zousi">\n                <i></i>\n                <span></span>\n            </div>\n        </div>\n    </div>\n</div>'
    }),
    this.JST["bijia/sub.remind"] = d.template(function(a, b, c, d, e) {
        return this.compilerInfo = [4, ">= 1.0.0"],
        c = this.merge(c, a.helpers),
        e = e || {},
        '<div class="cqol" id="TTK-sub-wrap">\n    <div class="TK-mind-sub">\n        <div class="TK-mind-sub-nav">\n            <!--div class="TK-mind-sub-remind">\n                <i class="TK-mind-sub-star"></i>\n            </div-->\n            <div class="TK-mind-sub-qutu">\n                <!--i class="TK-mind-sub-icon"></i>\n                <span class="J-TK-mind-sub-icon-text">价格曲线</span-->\n            </div>\n            <div class="TK-mind-sub-under-warp J-TK-mind-sub-under-warp">\n            </div>\n        </div>\n        <div class="TK-qutu-sub-warp">\n            <i class="TK-qutu-sub-pointer bijia-TTS_icon_up"></i>\n            <div class="TK-qutu-sub-con J-TK-qutu-sub-con">\n                <div class="TK-qutu-sub-price">\n\n                </div>\n                <div class="TK-qutu-sub-data">\n\n                </div>\n                <canvas id="TK-canvas-sub-base" class="TK-canvas-sub-base" style="width: 440px; height: 250px;" width="880" height="500"></canvas>\n                <canvas id="TK-canvas-sub-layout" class="TK-canvas-sub-layout" style="width: 440px; height: 250px;" width="880" height="500"></canvas>\n                <div class="TK-qutu-sub-msg">\n                    <div class="TK-qutu-sub-msg-wrap">\n\n                    </div>\n                </div>\n            </div>\n        </div>\n    </div>\n</div>'
    }),
    this.JST["bijia/sub.remind.min"] = d.template(function(a, b, c, d, e) {
        function f(a, b) {
            var c = "";
            return c
        }
        function g(a, b) {
            var d, e = "";
            return e += "\n            ",
            d = c["if"].call(a, a.shopType, {
                hash: {},
                inverse: q.program(6, i, b),
                fn: q.program(4, h, b),
                data: b
            }),
            (d || 0 === d) && (e += d),
            e += "\n        "
        }
        function h(a, b) {
            return '\n                <span class="TTS-product-owner">网站自营</span>\n            '
        }
        function i(a, b) {
            return '\n                <span class="TTS-product-owner">第三方</span>\n            '
        }
        function j(a, b) {
            var d, e = "";
            return e += '\n            <span class="TTS-product-sales">销量：',
            (d = c.sales) ? d = d.call(a, {
                hash: {},
                data: b
            }) : (d = a.sales, d = typeof d === r ? d.apply(a) : d),
            e += s(d) + "</span>\n        "
        }
        function k(a, b) {
            var d, e = "";
            return e += "\n            ",
            d = c["if"].call(a, a.com, {
                hash: {},
                inverse: q.noop,
                fn: q.program(11, l, b),
                data: b
            }),
            (d || 0 === d) && (e += d),
            e += "\n        "
        }
        function l(a, b) {
            var d, e = "";
            return e += '\n                <span class="TTS-product-comment">',
            (d = c.com) ? d = d.call(a, {
                hash: {},
                data: b
            }) : (d = a.com, d = typeof d === r ? d.apply(a) : d),
            e += s(d) + "条评论</span>\n            "
        }
        this.compilerInfo = [4, ">= 1.0.0"],
        c = this.merge(c, a.helpers),
        e = e || {};
        var m, n, o, p = "",
        q = this,
        r = "function",
        s = this.escapeExpression,
        t = c.helperMissing;
        return p += '<a target="_blank" href="',
        (m = c.clickUrl) ? m = m.call(b, {
            hash: {},
            data: e
        }) : (m = b.clickUrl, m = typeof m === r ? m.apply(b) : m),
        p += s(m) + '" data-tts-log="tool_lowest_click" class="TK-mind-sub-under">\n    <span class="TK-mind-sub-under-text">同款最低价</span>\n    <span class="TK-mind-sub-under-price J-TK-mind-sub-under-price"><em>&yen</em>',
        (m = c.promoPrice) ? m = m.call(b, {
            hash: {},
            data: e
        }) : (m = b.promoPrice, m = typeof m === r ? m.apply(b) : m),
        p += s(m) + '</span>\n</a>\n<div class="TTS-bijia-pop TTS-bijia-same-pop J-TK-mind-sub-under-pop">\n    <i class="TK-mind-sub-under-pointer bijia-TTS_icon_up"></i>\n    <div class="TTS-product-img">\n        <a href="',
        (m = c.clickUrl) ? m = m.call(b, {
            hash: {},
            data: e
        }) : (m = b.clickUrl, m = typeof m === r ? m.apply(b) : m),
        p += s(m) + '" data-tts-log="tool_lowest_magnify_click" target="_blank">\n            <img class="tk" src="',
        (m = c.ttsPicUrl) ? m = m.call(b, {
            hash: {},
            data: e
        }) : (m = b.ttsPicUrl, m = typeof m === r ? m.apply(b) : m),
        p += s(m) + '">\n        </a>\n    </div>\n    <div class="TTS-product-title">\n        <a href="',
        (m = c.clickUrl) ? m = m.call(b, {
            hash: {},
            data: e
        }) : (m = b.clickUrl, m = typeof m === r ? m.apply(b) : m),
        p += s(m) + '" data-tts-log="tool_lowest_magnify_click" target="_blank">',
        (m = c.title) ? m = m.call(b, {
            hash: {},
            data: e
        }) : (m = b.title, m = typeof m === r ? m.apply(b) : m),
        p += s(m) + '</a>\n    </div>\n    <p>\n        <span class="TTS-product-price"><em>&yen</em>',
        (m = c.promoPrice) ? m = m.call(b, {
            hash: {},
            data: e
        }) : (m = b.promoPrice, m = typeof m === r ? m.apply(b) : m),
        p += s(m) + '</span>\n    </p>\n    <p class="TTS-product-source">\n        <span class="src-',
        o = {
            hash: {},
            inverse: q.noop,
            fn: q.program(1, f, e),
            data: e
        },
        m = c.jdName || b.jdName,
        n = m ? m.call(b, b.webSite, o) : t.call(b, "jdName", b.webSite, o),
        (n || 0 === n) && (p += n),
        p += ' TTS-product-icon" >',
        o = {
            hash: {},
            inverse: q.noop,
            fn: q.program(1, f, e),
            data: e
        },
        m = c.source || b.source,
        n = m ? m.call(b, b.webSite, o) : t.call(b, "source", b.webSite, o),
        (n || 0 === n) && (p += n),
        p += "</span>\n        ",
        n = c["if"].call(b, b.shopOwner, {
            hash: {},
            inverse: q.noop,
            fn: q.program(3, g, e),
            data: e
        }),
        (n || 0 === n) && (p += n),
        p += "\n\n        ",
        n = c["if"].call(b, b.sales, {
            hash: {},
            inverse: q.program(10, k, e),
            fn: q.program(8, j, e),
            data: e
        }),
        (n || 0 === n) && (p += n),
        p += "\n    </p>\n</div>"
    }),
    this.JST["bijia/sub.remind.paopao"] = d.template(function(a, b, c, d, e) {
        function f(a, b) {
            var d, e = "";
            return e += '\n                <h4 class="TK-paopao-h4">设置降价提醒成功！</h4>\n                <div class="TK-paopao-price">\n                    现价：<span><em>&yen</em>',
            (d = c.price) ? d = d.call(a, {
                hash: {},
                data: b
            }) : (d = a.price, d = typeof d === j ? d.apply(a) : d),
            e += k(d) + '</span>\n                </div>\n                <p class="TK-paopao-msg">一旦降价会在这里通知你哦~</p>\n            '
        }
        function g(a, b) {
            var d, e = "";
            return e += '\n                <h4 class="TK-paopao-h4">您关注的商品降价啦！</h4>\n                <div class="TK-paopao-price">\n                    现价：<span><em>&yen</em>',
            (d = c.curprice) ? d = d.call(a, {
                hash: {},
                data: b
            }) : (d = a.curprice, d = typeof d === j ? d.apply(a) : d),
            e += k(d) + '</span>\n                </div>\n                <div class="TK-paopao-del">\n                    原价：<span><em>&yen</em>',
            (d = c.srcprice) ? d = d.call(a, {
                hash: {},
                data: b
            }) : (d = a.srcprice, d = typeof d === j ? d.apply(a) : d),
            e += k(d) + '</span>\n                </div>\n                <p class="TK-paopao-msg">更新于',
            (d = c.sendtime) ? d = d.call(a, {
                hash: {},
                data: b
            }) : (d = a.sendtime, d = typeof d === j ? d.apply(a) : d),
            e += k(d) + "</p>\n            "
        }
        this.compilerInfo = [4, ">= 1.0.0"],
        c = this.merge(c, a.helpers),
        e = e || {};
        var h, i = "",
        j = "function",
        k = this.escapeExpression,
        l = this;
        return i += '<div class="TK-paopao-detail TK-jjtx">\n    <div class="TK-paopao-hd"><s class="bijia-paopao-log"></s>\n\n        <h3 class="TK-paopao-title">降价提醒</h3>\n        <span class="TK-paopao-close bijia-paopao-close" title="关闭"></span>\n    </div>\n    <div class="TK-paopao-bd">\n        <div class="TK-paopao-img">\n            <a class="TK-paopao-img-alink J-paopao-go"\n               href="http://i.taotaosou.com/user?hash=priceremind/p/1#priceremind/p/1"\n               target="_blank">\n                <img src="',
        (h = c.img) ? h = h.call(b, {
            hash: {},
            data: e
        }) : (h = b.img, h = typeof h === j ? h.apply(b) : h),
        i += k(h) + '">\n            </a>\n        </div>\n\n        <div class="TK-paopao-info">\n            ',
        h = c["if"].call(b, b.set, {
            hash: {},
            inverse: l.program(3, g, e),
            fn: l.program(1, f, e),
            data: e
        }),
        (h || 0 === h) && (i += h),
        i += '\n            <a href="http://i.taotaosou.com/user?hash=priceremind/p/1#priceremind/p/1"\n               target="_blank" class="TK-paopao-go J-paopao-go">查看更多</a>\n        </div>\n    </div>\n</div>'
    }),
    this.JST["bijia/taobao.biaolei"] = d.template(function(a, b, c, d, e) {
        function f(a, b) {
            var d, e = "";
            return e += "\n ",
            d = c["if"].call(a, a.isshow, {
                hash: {},
                inverse: q.noop,
                fn: q.program(2, g, b),
                data: b
            }),
            (d || 0 === d) && (e += d),
            e += "\n  "
        }
        function g(a, b) {
            var d, e = "";
            return e += '\n  <dd>\n      <div class="TTS-biaolei">\n         <i class="TTS-right-line"></i>\n            <div class="TTS-lowestPrice"> ￥',
            (d = c.lowestPrice) ? d = d.call(a, {
                hash: {},
                data: b
            }) : (d = a.lowestPrice, d = typeof d === o ? d.apply(a) : d),
            e += p(d) + '</div>\n         <div class="TTS-product-count">',
            (d = c.count) ? d = d.call(a, {
                hash: {},
                data: b
            }) : (d = a.count, d = typeof d === o ? d.apply(a) : d),
            e += p(d) + '件同款</div>\n          <div class="TTS-website"><span class="',
            (d = c.webSiteLogo) ? d = d.call(a, {
                hash: {},
                data: b
            }) : (d = a.webSiteLogo, d = typeof d === o ? d.apply(a) : d),
            e += p(d) + '"></span>',
            (d = c.webSiteTitle) ? d = d.call(a, {
                hash: {},
                data: b
            }) : (d = a.webSiteTitle, d = typeof d === o ? d.apply(a) : d),
            e += p(d) + '</div>\n           <div class="TTS-biaolei-product">\n             <i class="TTS-biaolei-pointer bijia-TTS_icon_down"></i>\n               ',
            d = c.each.call(a, a.list, {
                hash: {},
                inverse: q.noop,
                fn: q.program(3, h, b),
                data: b
            }),
            (d || 0 === d) && (e += d),
            e += '\n             <div class="TTS-biaolei-product-more">\n                    <a href="',
            (d = c.more) ? d = d.call(a, {
                hash: {},
                data: b
            }) : (d = a.more, d = typeof d === o ? d.apply(a) : d),
            e += p(d) + '" target="_blank">查看更多>></a>\n               </div>\n            </div>\n        </div>\n    </dd>\n '
        }
        function h(a, b) {
            var d, e = "";
            return e += "\n                  ",
            d = c["if"].call(a, a.ishow, {
                hash: {},
                inverse: q.noop,
                fn: q.program(4, i, b),
                data: b
            }),
            (d || 0 === d) && (e += d),
            e += "\n               "
        }
        function i(a, b) {
            var d, e = "";
            return e += '\n                  <div class="TTS-biaolei-one">\n                     ',
            d = c["if"].call(a, a.minPrice, {
                hash: {},
                inverse: q.noop,
                fn: q.program(5, j, b),
                data: b
            }),
            (d || 0 === d) && (e += d),
            e += '\n                        <div class="TTS-biaolei-img TTS-left">\n                            <a href="',
            (d = c.clickUrl) ? d = d.call(a, {
                hash: {},
                data: b
            }) : (d = a.clickUrl, d = typeof d === o ? d.apply(a) : d),
            e += p(d) + '" target="_blank"><img src="',
            (d = c.ttsPicUrl) ? d = d.call(a, {
                hash: {},
                data: b
            }) : (d = a.ttsPicUrl, d = typeof d === o ? d.apply(a) : d),
            e += p(d) + '" width="60" height="60" alt=""/></a>\n                      </div>\n                        <div class="TTS-biaolei-title TTS-left">\n                          <a href="',
            (d = c.clickUrl) ? d = d.call(a, {
                hash: {},
                data: b
            }) : (d = a.clickUrl, d = typeof d === o ? d.apply(a) : d),
            e += p(d) + '" target="_blank"><p>',
            (d = c.title) ? d = d.call(a, {
                hash: {},
                data: b
            }) : (d = a.title, d = typeof d === o ? d.apply(a) : d),
            e += p(d) + '</p></a>\n                          <!--span class="TTS-biaolei-ziyin">自营<span-->\n                     </div>\n                        <div class="TTS-biaolei-price">\n                           <p>￥',
            (d = c.promoPrice) ? d = d.call(a, {
                hash: {},
                data: b
            }) : (d = a.promoPrice, d = typeof d === o ? d.apply(a) : d),
            e += p(d) + "</p>\n                            <!--",
            d = c["if"].call(a, a.sales, {
                hash: {},
                inverse: q.program(9, l, b),
                fn: q.program(7, k, b),
                data: b
            }),
            (d || 0 === d) && (e += d),
            e += "-->\n                      </div>\n                    </div>\n                    "
        }
        function j(a, b) {
            return "\n                         <span class='TTS-minprice'>最低价</span>\n                     "
        }
        function k(a, b) {
            var d, e = "";
            return e += "\n                              <span>销量:",
            (d = c.sales) ? d = d.call(a, {
                hash: {},
                data: b
            }) : (d = a.sales, d = typeof d === o ? d.apply(a) : d),
            e += p(d) + "</span>\n                          "
        }
        function l(a, b) {
            return "\n                             <span>销量:未知</span>\n                            "
        }
        this.compilerInfo = [4, ">= 1.0.0"],
        c = this.merge(c, a.helpers),
        e = e || {};
        var m, n = "",
        o = "function",
        p = this.escapeExpression,
        q = this;
        return n += '<dl class="TTS-biaolei-list TTS-left">\n ',
        m = c.each.call(b, b.list, {
            hash: {},
            inverse: q.noop,
            fn: q.program(1, f, e),
            data: e
        }),
        (m || 0 === m) && (n += m),
        n += "\n</dl>"
    }),
    this.JST["bijia/taobao.cps"] = d.template(function(a, b, c, d, e) {
        function f(a, b) {
            var d, e, f, i = "";
            return i += "\n    <li class=",
            f = {
                hash: {},
                inverse: k.program(4, h, b),
                fn: k.program(2, g, b),
                data: b
            },
            d = c.lt || a.lt,
            e = d ? d.call(a, (d = b, null == d || d === !1 ? d: d.index), 3, f) : l.call(a, "lt", (d = b, null == d || d === !1 ? d: d.index), 3, f),
            (e || 0 === e) && (i += e),
            i += '>\n      <a class="TTS-list-product-img" href=',
            (e = c.clickUrl) ? e = e.call(a, {
                hash: {},
                data: b
            }) : (e = a.clickUrl, e = typeof e === m ? e.apply(a) : e),
            i += n(e) + ' target="_blank">\n        <img src=',
            f = {
                hash: {},
                data: b
            },
            i += n((d = c.imgCDN || a.imgCDN, d ? d.call(a, 70, 70, a.picUrl, f) : l.call(a, "imgCDN", 70, 70, a.picUrl, f))) + '>\n      </a>\n      <p class="TTS-list-product-detail">\n        <span class="src-price"><em>&yen;</em>',
            (e = c.price) ? e = e.call(a, {
                hash: {},
                data: b
            }) : (e = a.price, e = typeof e === m ? e.apply(a) : e),
            i += n(e) + "</span>\n      </p>\n    </li>\n  "
        }
        function g(a, b) {
            return '"TTS-list-right-head"'
        }
        function h(a, b) {
            return '"TTS-list-right-tail"'
        }
        this.compilerInfo = [4, ">= 1.0.0"],
        c = this.merge(c, a.helpers),
        e = e || {};
        var i, j = "",
        k = this,
        l = c.helperMissing,
        m = "function",
        n = this.escapeExpression;
        return j += '<div class="bijia-cps-title TTS-left"></div>\n<ul class="TTS-left" data-tts-log="Bottomtab_allsee_click">\n  ',
        i = c.each.call(b, b.list, {
            hash: {},
            inverse: k.noop,
            fn: k.program(1, f, e),
            data: e
        }),
        (i || 0 === i) && (j += i),
        j += "\n</ul>"
    }),
    this.JST["bijia/taobao.cps.pop"] = d.template(function(a, b, c, d, e) {
        function f(a, b) {
            var d, e = "";
            return e += '\n      <span class="TTS-product-sales">销量：',
            (d = c.sales) ? d = d.call(a, {
                hash: {},
                data: b
            }) : (d = a.sales, d = typeof d === m ? d.apply(a) : d),
            e += n(d) + "</span>\n    "
        }
        function g(a, b) {
            var d, e = "";
            return e += "\n      ",
            d = c["if"].call(a, a.com, {
                hash: {},
                inverse: o.noop,
                fn: o.program(4, h, b),
                data: b
            }),
            (d || 0 === d) && (e += d),
            e += "\n    "
        }
        function h(a, b) {
            var d, e = "";
            return e += '\n        <span class="TTS-product-comment">',
            (d = c.com) ? d = d.call(a, {
                hash: {},
                data: b
            }) : (d = a.com, d = typeof d === m ? d.apply(a) : d),
            e += n(d) + "条评论</span>\n      "
        }
        this.compilerInfo = [4, ">= 1.0.0"],
        c = this.merge(c, a.helpers),
        e = e || {};
        var i, j, k, l = "",
        m = "function",
        n = this.escapeExpression,
        o = this,
        p = c.helperMissing;
        return l += '<div class="TTS-bijia-pop" data-tts-log="Bottomtab_allsee_magnify_click">\n  <div class="TTS-product-img">\n    <a href=',
        (i = c.clickUrl) ? i = i.call(b, {
            hash: {},
            data: e
        }) : (i = b.clickUrl, i = typeof i === m ? i.apply(b) : i),
        l += n(i) + ' target="_blank"><img src=',
        k = {
            hash: {},
            data: e
        },
        l += n((i = c.imgCDN || b.imgCDN, i ? i.call(b, 200, 200, b.picUrl, k) : p.call(b, "imgCDN", 200, 200, b.picUrl, k))) + '></a>\n  </div>\n  <div class="TTS-product-title">\n    <a href=',
        (j = c.clickUrl) ? j = j.call(b, {
            hash: {},
            data: e
        }) : (j = b.clickUrl, j = typeof j === m ? j.apply(b) : j),
        l += n(j) + ' target="_blank">',
        (j = c.title) ? j = j.call(b, {
            hash: {},
            data: e
        }) : (j = b.title, j = typeof j === m ? j.apply(b) : j),
        l += n(j) + '</a>\n  </div>\n  <p>\n    <span class="TTS-product-price"><em>&yen;</em>',
        (j = c.price) ? j = j.call(b, {
            hash: {},
            data: e
        }) : (j = b.price, j = typeof j === m ? j.apply(b) : j),
        l += n(j) + "</span>\n    ",
        j = c["if"].call(b, b.sales, {
            hash: {},
            inverse: o.program(3, g, e),
            fn: o.program(1, f, e),
            data: e
        }),
        (j || 0 === j) && (l += j),
        l += "\n  </p>\n</div>"
    }),
    this.JST["bijia/taobao.ditong"] = d.template(function(a, b, c, d, e) {
        this.compilerInfo = [4, ">= 1.0.0"],
        c = this.merge(c, a.helpers),
        e = e || {};
        var f, g = "",
        h = "function",
        i = this.escapeExpression;
        return g += '<span class="dtAds" target="_blank" alt="',
        (f = c.title) ? f = f.call(b, {
            hash: {},
            data: e
        }) : (f = b.title, f = typeof f === h ? f.apply(b) : f),
        g += i(f) + '" href="http://search.taotaosou.com/transfer.htm?',
        (f = c.href) ? f = f.call(b, {
            hash: {},
            data: e
        }) : (f = b.href, f = typeof f === h ? f.apply(b) : f),
        g += i(f) + '">\n  <img src="',
        (f = c.media) ? f = f.call(b, {
            hash: {},
            data: e
        }) : (f = b.media, f = typeof f === h ? f.apply(b) : f),
        g += i(f) + '">\n</span>'
    }),
    this.JST["bijia/taobao"] = d.template(function(a, b, c, d, e) {
        function f(a, b) {
            return '\n    <div class="TTS-qutu-wrap TTS-right"></div>\n  '
        }
        function g(a, b) {
            var d, e, f, g = "";
            return g += "\n        ",
            f = {
                hash: {},
                inverse: r.program(6, i, b),
                fn: r.program(4, h, b),
                data: b
            },
            d = c.lengthLt || a.lengthLt,
            e = d ? d.call(a, a.sameList, 0, f) : s.call(a, "lengthLt", a.sameList, 0, f),
            (e || 0 === e) && (g += e),
            g += "\n      "
        }
        function h(a, b) {
            var d, e = "";
            return e += '\n          <a class="TTS-bijia-more-btn TTS-bijia-more TTS-left" href=',
            (d = c.more) ? d = d.call(a, {
                hash: {},
                data: b
            }) : (d = a.more, d = typeof d === p ? d.apply(a) : d),
            e += q(d) + ' target="_blank" data-tts-log="Bottomtab_group_more_click"><span>更多同款</span>\n</a>\n        '
        }
        function i(a, b) {
            var d, e, f, g = "";
            return g += "\n          ",
            f = {
                hash: {},
                inverse: r.noop,
                fn: r.program(7, j, b),
                data: b
            },
            d = c.lengthLt || a.lengthLt,
            e = d ? d.call(a, a.similarList, 0, f) : s.call(a, "lengthLt", a.similarList, 0, f),
            (e || 0 === e) && (g += e),
            g += "\n        "
        }
        function j(a, b) {
            var d, e = "";
            return e += '\n            <a class="TTS-bijia-more-btn TTS-bijia-more TTS-left" href=',
            (d = c.more) ? d = d.call(a, {
                hash: {},
                data: b
            }) : (d = a.more, d = typeof d === p ? d.apply(a) : d),
            e += q(d) + ' target="_blank" data-tts-log="Bottomtab_recom_more_click"><span>更多推荐</span>\n</a>\n          '
        }
        function k(a, b) {
            var d, e, f, g = "";
            return g += "\n          ",
            f = {
                hash: {},
                inverse: r.noop,
                fn: r.program(10, l, b),
                data: b
            },
            d = c.lengthLt || a.lengthLt,
            e = d ? d.call(a, a.proList, 0, f) : s.call(a, "lengthLt", a.proList, 0, f),
            (e || 0 === e) && (g += e),
            g += "\n      "
        }
        function l(a, b) {
            var d, e = "";
            return e += '\n              <a class="TTS-bijia-more-btn TTS-left" href=',
            (d = c.list) ? d = d.call(a, {
                hash: {},
                data: b
            }) : (d = a.list, d = typeof d === p ? d.apply(a) : d),
            e += q(d) + ' target="_blank" data-tts-log="Bottomtab_tsearch_more_click">\n              <span>更多</span>\n              </a>\n          '
        }
        function m(a, b) {
            var d, e = "";
            return e += '\n      <a class="TTS-bijia-more-btn TTS-bijia-more TTS-left" href=',
            (d = c.more) ? d = d.call(a, {
                hash: {},
                data: b
            }) : (d = a.more, d = typeof d === p ? d.apply(a) : d),
            e += q(d) + ' target="_blank" data-tts-log="Bottomtab_recom_more_click"><span>更多同款</span>\n      </a>\n      '
        }
        this.compilerInfo = [4, ">= 1.0.0"],
        c = this.merge(c, a.helpers),
        e = e || {};
        var n, o = "",
        p = "function",
        q = this.escapeExpression,
        r = this,
        s = c.helperMissing;
        return o += '<div id="TTS_bijia_wrap" class="TTS_bijia_wrap ',
        (n = c.host) ? n = n.call(b, {
            hash: {},
            data: e
        }) : (n = b.host, n = typeof n === p ? n.apply(b) : n),
        o += q(n) + '">\n  <div class="TTS_logo_bijia bijia-TTS_ditong_on TTS-left TTS-bijia-logo-bg">\n      <a href="http://un.taotaosou.com" target="_blank" class="TTS-logo-a" style="display: block;width: 70px;height: 70px;"></a>\n      <div class="TTS-mune">\n        <a href="http://www.taotaosou.com/" target="_blank" class="TTS_mainUrl">主站</a> \n        <div id="TTS-config" class="TTS-config"><span class="TTS-config-text">设置</span></div>\n        <a href="http://www.taotaosou.com/service.html" target="_blank" class="TTS_mainUrl">意见反馈</a>\n        <a href="http://un.taotaosou.com/register.html" target="_blank" class="TTS_yijianUrl">卖家入驻</a>\n      </div>\n  </div>\n  <!--\n  <div class="TTS-remind-wrap TTS-left"></div-->\n  ',
        n = c["if"].call(b, b.issale, {
            hash: {},
            inverse: r.noop,
            fn: r.program(1, f, e),
            data: e
        }),
        (n || 0 === n) && (o += n),
        o += '\n  <div class="TTS-products-wrap TTS-left">\n    <div class="TTS-list-left-wrap TTS-left">\n      <div class="TTS-list-left TTS-left">\n      </div>\n      ',
        n = c["if"].call(b, b.more, {
            hash: {},
            inverse: r.noop,
            fn: r.program(3, g, e),
            data: e
        }),
        (n || 0 === n) && (o += n),
        o += "\n      ",
        n = c["if"].call(b, b.list, {
            hash: {},
            inverse: r.noop,
            fn: r.program(9, k, e),
            data: e
        }),
        (n || 0 === n) && (o += n),
        o += "\n      ",
        n = c["if"].call(b, b.dividedList, {
            hash: {},
            inverse: r.noop,
            fn: r.program(12, m, e),
            data: e
        }),
        (n || 0 === n) && (o += n),
        o += '\n    </div>\n    <!--<div id="TTS-group">\n      <div id="KKT-nomore">\n        <span>限量抢购</span> \n        <em id="KKT-arrow" class="bijia-arrow-down"></em>\n      </div>\n      <a target="_blank" id="KKT-bottom-click" href="http://www.chaoji99.com/#gouwu" data-tts-log="_Bottomtab_seckill_click">\n        <div id="KKT-open-tuangou">\n          <div id="KKT-tuan-time"></div>\n        </div>\n      </a>\n    </div>-->\n  </div>\n  <a class="TTS-bijia-min-btn bijia-btn bijia-TTS_ditong_close"></a>\n  <div class="TTS-list-right-wrap TTS-tuan TTS-right">\n    <div class="TTS-list-right TTS-tumeiti TTS-left TTS-banner-wrap"></div>\n  </div>\n</div>'
    }),
    this.JST["bijia/taobao.like"] = d.template(function(a, b, c, d, e) {
        function f(a, b) {
            var d, e, f, m = "";
            return m += '\n    <li class="',
            f = {
                hash: {},
                inverse: o.program(4, h, b),
                fn: o.program(2, g, b),
                data: b
            },
            d = c.lt || a.lt,
            e = d ? d.call(a, (d = b, null == d || d === !1 ? d: d.index), 5, f) : p.call(a, "lt", (d = b, null == d || d === !1 ? d: d.index), 5, f),
            (e || 0 === e) && (m += e),
            m += " ",
            f = {
                hash: {},
                inverse: o.noop,
                fn: o.program(6, i, b),
                data: b
            },
            d = c.is || a.is,
            e = d ? d.call(a, (d = b, null == d || d === !1 ? d: d.index), 7, f) : p.call(a, "is", (d = b, null == d || d === !1 ? d: d.index), 7, f),
            (e || 0 === e) && (m += e),
            e = c["if"].call(a, a.isMin, {
                hash: {},
                inverse: o.noop,
                fn: o.program(8, j, b),
                data: b
            }),
            (e || 0 === e) && (m += e),
            m += '">\n        <a class="TTS-list-product-img" href=',
            (e = c.clickUrl) ? e = e.call(a, {
                hash: {},
                data: b
            }) : (e = a.clickUrl, e = typeof e === q ? e.apply(a) : e),
            m += r(e) + ' target="_blank">\n            <img class="tk" src=',
            f = {
                hash: {},
                data: b
            },
            m += r((d = c.imgCDN || a.imgCDN, d ? d.call(a, 70, 70, a.picUrl, f) : p.call(a, "imgCDN", 70, 70, a.picUrl, f))) + '>\n        </a>\n        <p class="TTS-list-product-detail">\n            <span class="src-',
            f = {
                hash: {},
                inverse: o.noop,
                fn: o.program(10, k, b),
                data: b
            },
            d = c.jdName || a.jdName,
            e = d ? d.call(a, a.webSite, f) : p.call(a, "jdName", a.webSite, f),
            (e || 0 === e) && (m += e),
            m += ' src-icon" >',
            f = {
                hash: {},
                inverse: o.noop,
                fn: o.program(10, k, b),
                data: b
            },
            d = c.sourceShort || a.sourceShort,
            e = d ? d.call(a, a.webSite, f) : p.call(a, "sourceShort", a.webSite, f),
            (e || 0 === e) && (m += e),
            m += '</span>\n            <span class="src-price"><em>&yen;</em>',
            (e = c.promoPrice) ? e = e.call(a, {
                hash: {},
                data: b
            }) : (e = a.promoPrice, e = typeof e === q ? e.apply(a) : e),
            m += r(e) + "</span>\n        </p>\n        ",
            e = c["if"].call(a, a.isMin, {
                hash: {},
                inverse: o.noop,
                fn: o.program(12, l, b),
                data: b
            }),
            (e || 0 === e) && (m += e),
            m += "\n    </li>\n"
        }
        function g(a, b) {
            return "TTS-list-left-head"
        }
        function h(a, b) {
            return "TTS-list-left-tail"
        }
        function i(a, b) {
            return "TTS-list-left-last"
        }
        function j(a, b) {
            return "TTS-list-lowestPrice"
        }
        function k(a, b) {
            var c = "";
            return c
        }
        function l(a, b) {
            return '\n            <div class="tip-lowestPrice">\n                <span>最低价</span>\n                <em class="bijia-arrow-down"></em>\n            </div>\n        '
        }
        this.compilerInfo = [4, ">= 1.0.0"],
        c = this.merge(c, a.helpers),
        e = e || {};
        var m, n = "",
        o = this,
        p = c.helperMissing,
        q = "function",
        r = this.escapeExpression;
        return n += '<span class="bijia-like-title TTS-left"></span>\n\n<ul class="TTS-left" data-tts-log="Bottomtab_',
        (m = c.laiyuan) ? m = m.call(b, {
            hash: {},
            data: e
        }) : (m = b.laiyuan, m = typeof m === q ? m.apply(b) : m),
        n += r(m) + '_click">\n',
        m = c.each.call(b, b.list, {
            hash: {},
            inverse: o.noop,
            fn: o.program(1, f, e),
            data: e
        }),
        (m || 0 === m) && (n += m),
        n += "\n</ul>"
    }),
    this.JST["bijia/taobao.qutu"] = d.template(function(a, b, c, d, e) {
        return this.compilerInfo = [4, ">= 1.0.0"],
        c = this.merge(c, a.helpers),
        e = e || {},
        '<div class="cqols" id="TTK-sub-wrap">\n    <div class="TK-mind-sub">\n        <div class="TK-mind-sub-nav">\n            <div class="TK-mind-sub-qutu">\n            </div>\n        </div>\n        <div class="TK-qutu-sub-warp">\n            <i class="TK-qutu-sub-pointer bijia-TTS_icon_down"></i>\n            <div class="TK-qutu-sub-con J-TK-qutu-sub-con">\n                <div class="TK-qutu-sub-price">\n\n                </div>\n                <div class="TK-qutu-sub-data">\n\n                </div>\n                <canvas id="TK-canvas-sub-base" class="TK-canvas-sub-base" style="width: 440px; height: 250px;" width="880" height="500"></canvas>\n                <canvas id="TK-canvas-sub-layout" class="TK-canvas-sub-layout" style="width: 440px; height: 250px;" width="880" height="500"></canvas>\n                <div class="TK-qutu-sub-msg">\n                    <div class="TK-qutu-sub-msg-wrap">\n\n                    </div>\n                </div>\n            </div>\n        </div>\n    </div>\n</div>'
    }),
    this.JST["bijia/taobao.remind"] = d.template(function(a, b, c, d, e) {
        return this.compilerInfo = [4, ">= 1.0.0"],
        c = this.merge(c, a.helpers),
        e = e || {},
        '<a class="TK-remind-btn bijia-remind TTS-left">\n</a>'
    }),
    this.JST["bijia/taobao.same"] = d.template(function(a, b, c, d, e) {
        function f(a, b) {
            var d, e = "";
            return e += "\n  <ul data-tts-log=",
            d = c["if"].call(a, a.isSameList, {
                hash: {},
                inverse: x.program(4, h, b),
                fn: x.program(2, g, b),
                data: b
            }),
            (d || 0 === d) && (e += d),
            e += ">\n  ",
            d = c.each.call(a, a.list, {
                hash: {},
                inverse: x.noop,
                fn: x.program(6, i, b),
                data: b
            }),
            (d || 0 === d) && (e += d),
            e += "\n  </ul>\n"
        }
        function g(a, b) {
            return '"Bottomtab_group_click"'
        }
        function h(a, b) {
            return '"Bottomtab_recom_click"'
        }
        function i(a, b) {
            var d, e, f, g = "";
            return g += '\n    <li class="',
            f = {
                hash: {},
                inverse: x.program(9, k, b),
                fn: x.program(7, j, b),
                data: b
            },
            d = c.lt || a.lt,
            e = d ? d.call(a, (d = b, null == d || d === !1 ? d: d.index), 3, f) : y.call(a, "lt", (d = b, null == d || d === !1 ? d: d.index), 3, f),
            (e || 0 === e) && (g += e),
            g += " ",
            e = c["if"].call(a, a.isMin, {
                hash: {},
                inverse: x.noop,
                fn: x.program(11, l, b),
                data: b
            }),
            (e || 0 === e) && (g += e),
            g += '">\n      <a class="TTS-list-product-img juzi_biaolei" href=',
            (e = c.clickUrl) ? e = e.call(a, {
                hash: {},
                data: b
            }) : (e = a.clickUrl, e = typeof e === v ? e.apply(a) : e),
            g += w(e) + ' target="_blank">\n        <div class="TTS-list-product-detail juzi_biaolei_bgc">\n\n        <div class="src-price"><em>&yen;</em>',
            (e = c.promoPrice) ? e = e.call(a, {
                hash: {},
                data: b
            }) : (e = a.promoPrice, e = typeof e === v ? e.apply(a) : e),
            g += w(e) + '</div>\n          <div class="juzi_bijia_sales">',
            e = c["if"].call(a, a.sales, {
                hash: {},
                inverse: x.program(15, n, b),
                fn: x.program(13, m, b),
                data: b
            }),
            (e || 0 === e) && (g += e),
            g += '</span></div>\n        <div class="src-',
            f = {
                hash: {},
                inverse: x.noop,
                fn: x.program(18, p, b),
                data: b
            },
            d = c.jdName || a.jdName,
            e = d ? d.call(a, a.webSite, f) : y.call(a, "jdName", a.webSite, f),
            (e || 0 === e) && (g += e),
            g += ' src-icon">',
            (e = c.webSiteTitle) ? e = e.call(a, {
                hash: {},
                data: b
            }) : (e = a.webSiteTitle, e = typeof e === v ? e.apply(a) : e),
            g += w(e) + "</div>\n        </div>\n      </a>\n      ",
            e = c["if"].call(a, a.minPrice, {
                hash: {},
                inverse: x.noop,
                fn: x.program(20, q, b),
                data: b
            }),
            (e || 0 === e) && (g += e),
            g += "\n    </li>\n  "
        }
        function j(a, b) {
            return "TTS-list-left-head"
        }
        function k(a, b) {
            return "TTS-list-left-tail"
        }
        function l(a, b) {
            return "TTS-list-lowestPrice"
        }
        function m(a, b) {
            var d, e = "";
            return e += "销量<span>",
            (d = c.sales) ? d = d.call(a, {
                hash: {},
                data: b
            }) : (d = a.sales, d = typeof d === v ? d.apply(a) : d),
            e += w(d)
        }
        function n(a, b) {
            var d;
            return d = c["if"].call(a, a.feedbackCount, {
                hash: {},
                inverse: x.noop,
                fn: x.program(16, o, b),
                data: b
            }),
            d || 0 === d ? d: ""
        }
        function o(a, b) {
            var d, e = "";
            return e += "评论<span>",
            (d = c.feedbackCount) ? d = d.call(a, {
                hash: {},
                data: b
            }) : (d = a.feedbackCount, d = typeof d === v ? d.apply(a) : d),
            e += w(d)
        }
        function p(a, b) {
            var c = "";
            return c
        }
        function q(a, b) {
            return 'webSiteTitle\n        <div class="tip-lowestPrice">\n          <span>最低价</span>\n          <em class="bijia-arrow-down"></em>\n        </div>\n      ';
        }
        function r(a, b) {
            var d, e = "";
            return e += "\n  <ul data-tts-log=",
            d = c["if"].call(a, a.isSameList, {
                hash: {},
                inverse: x.program(4, h, b),
                fn: x.program(2, g, b),
                data: b
            }),
            (d || 0 === d) && (e += d),
            e += ">\n  ",
            d = c.each.call(a, a.list, {
                hash: {},
                inverse: x.noop,
                fn: x.program(23, s, b),
                data: b
            }),
            (d || 0 === d) && (e += d),
            e += "\n  </ul>\n"
        }
        function s(a, b) {
            var d, e, f, g = "";
            return g += '\n    <li class="',
            f = {
                hash: {},
                inverse: x.program(9, k, b),
                fn: x.program(7, j, b),
                data: b
            },
            d = c.lt || a.lt,
            e = d ? d.call(a, (d = b, null == d || d === !1 ? d: d.index), 3, f) : y.call(a, "lt", (d = b, null == d || d === !1 ? d: d.index), 3, f),
            (e || 0 === e) && (g += e),
            g += " ",
            e = c["if"].call(a, a.isMin, {
                hash: {},
                inverse: x.noop,
                fn: x.program(11, l, b),
                data: b
            }),
            (e || 0 === e) && (g += e),
            g += '">\n      <a class="TTS-list-product-img" href=',
            (e = c.clickUrl) ? e = e.call(a, {
                hash: {},
                data: b
            }) : (e = a.clickUrl, e = typeof e === v ? e.apply(a) : e),
            g += w(e) + ' target="_blank">\n        <img width="70" height="70" class="tk" src=',
            (e = c.ttsPicUrl) ? e = e.call(a, {
                hash: {},
                data: b
            }) : (e = a.ttsPicUrl, e = typeof e === v ? e.apply(a) : e),
            g += w(e) + '>\n      </a>\n      <p class="TTS-list-product-detail">\n        <span class="src-',
            f = {
                hash: {},
                inverse: x.noop,
                fn: x.program(18, p, b),
                data: b
            },
            d = c.jdName || a.jdName,
            e = d ? d.call(a, a.webSite, f) : y.call(a, "jdName", a.webSite, f),
            (e || 0 === e) && (g += e),
            g += ' src-icon">',
            (e = c.webSiteTitle) ? e = e.call(a, {
                hash: {},
                data: b
            }) : (e = a.webSiteTitle, e = typeof e === v ? e.apply(a) : e),
            g += w(e) + '</span>\n        <span class="src-price"><em>&yen;</em>',
            (e = c.promoPrice) ? e = e.call(a, {
                hash: {},
                data: b
            }) : (e = a.promoPrice, e = typeof e === v ? e.apply(a) : e),
            g += w(e) + "</span>\n      </p>\n      ",
            e = c["if"].call(a, a.minPrice, {
                hash: {},
                inverse: x.noop,
                fn: x.program(24, t, b),
                data: b
            }),
            (e || 0 === e) && (g += e),
            g += "\n    </li>\n  "
        }
        function t(a, b) {
            return '\n        <div class="tip-lowestPrice">\n          <span>最低价</span>\n          <em class="bijia-arrow-down"></em>\n        </div>\n      '
        }
        this.compilerInfo = [4, ">= 1.0.0"],
        c = this.merge(c, a.helpers),
        e = e || {};
        var u, v = "function",
        w = this.escapeExpression,
        x = this,
        y = c.helperMissing;
        return u = c["if"].call(b, b.biaolei, {
            hash: {},
            inverse: x.program(22, r, e),
            fn: x.program(1, f, e),
            data: e
        }),
        u || 0 === u ? u: ""
    }),
    this.JST["bijia/taobao.same.pop"] = d.template(function(a, b, c, d, e) {
        function f(a, b) {
            return '"Bottomtab_group_magnify_click"'
        }
        function g(a, b) {
            var d, e = "";
            return e += " ",
            d = c["if"].call(a, a.isProList, {
                hash: {},
                inverse: w.program(6, i, b),
                fn: w.program(4, h, b),
                data: b
            }),
            (d || 0 === d) && (e += d),
            e
        }
        function h(a, b) {
            var d, e = "";
            return e += '"Bottomtab_',
            (d = c.isProList) ? d = d.call(a, {
                hash: {},
                data: b
            }) : (d = a.isProList, d = typeof d === u ? d.apply(a) : d),
            e += v(d) + '_magnify_click"'
        }
        function i(a, b) {
            return '"Bottomtab_recom_magnify_click"'
        }
        function j(a, b) {
            var c = "";
            return c
        }
        function k(a, b) {
            var d, e = "";
            return e += "\n        ",
            d = c["if"].call(a, a.shopType, {
                hash: {},
                inverse: w.program(13, m, b),
                fn: w.program(11, l, b),
                data: b
            }),
            (d || 0 === d) && (e += d),
            e += "\n    "
        }
        function l(a, b) {
            return '\n            <span class="TTS-product-owner">网站自营</span>\n        '
        }
        function m(a, b) {
            return '\n            <span class="TTS-product-owner">第三方</span>\n        '
        }
        function n(a, b) {
            var d, e = "";
            return e += '\n      <span class="TTS-product-sales">销量：',
            (d = c.sales) ? d = d.call(a, {
                hash: {},
                data: b
            }) : (d = a.sales, d = typeof d === u ? d.apply(a) : d),
            e += v(d) + "</span>\n    "
        }
        function o(a, b) {
            var d, e = "";
            return e += "\n      ",
            d = c["if"].call(a, a.com, {
                hash: {},
                inverse: w.noop,
                fn: w.program(18, p, b),
                data: b
            }),
            (d || 0 === d) && (e += d),
            e += "\n    "
        }
        function p(a, b) {
            var d, e = "";
            return e += '\n        <span class="TTS-product-comment">',
            (d = c.com) ? d = d.call(a, {
                hash: {},
                data: b
            }) : (d = a.com, d = typeof d === u ? d.apply(a) : d),
            e += v(d) + "条评论</span>\n      "
        }
        this.compilerInfo = [4, ">= 1.0.0"],
        c = this.merge(c, a.helpers),
        e = e || {};
        var q, r, s, t = "",
        u = "function",
        v = this.escapeExpression,
        w = this,
        x = c.helperMissing;
        return t += '<div class="TTS-bijia-pop TTS-bijia-same-pop" data-tts-log=',
        q = c["if"].call(b, b.isSameList, {
            hash: {},
            inverse: w.program(3, g, e),
            fn: w.program(1, f, e),
            data: e
        }),
        (q || 0 === q) && (t += q),
        t += '>\n  <i class="TTS-pointer bijia-TTS_icon_down"></i>\n  <div class="TTS-product-img">\n    <a href=',
        (q = c.clickUrl) ? q = q.call(b, {
            hash: {},
            data: e
        }) : (q = b.clickUrl, q = typeof q === u ? q.apply(b) : q),
        t += v(q) + ' target="_blank"><img width="200" class="tk" src=',
        (q = c.ttsPicUrl) ? q = q.call(b, {
            hash: {},
            data: e
        }) : (q = b.ttsPicUrl, q = typeof q === u ? q.apply(b) : q),
        t += v(q) + '></a>\n  </div>\n  <div class="TTS-product-title">\n    <a href=',
        (q = c.clickUrl) ? q = q.call(b, {
            hash: {},
            data: e
        }) : (q = b.clickUrl, q = typeof q === u ? q.apply(b) : q),
        t += v(q) + ' target="_blank">',
        (q = c.title) ? q = q.call(b, {
            hash: {},
            data: e
        }) : (q = b.title, q = typeof q === u ? q.apply(b) : q),
        t += v(q) + '</a>\n  </div>\n  <p>\n    <span class="TTS-product-price"><em>&yen;</em>',
        (q = c.promoPrice) ? q = q.call(b, {
            hash: {},
            data: e
        }) : (q = b.promoPrice, q = typeof q === u ? q.apply(b) : q),
        t += v(q) + '</span>\n  </p>\n  <p class="TTS-product-source">\n    <span class="src-',
        s = {
            hash: {},
            inverse: w.noop,
            fn: w.program(8, j, e),
            data: e
        },
        q = c.jdName || b.jdName,
        r = q ? q.call(b, b.webSite, s) : x.call(b, "jdName", b.webSite, s),
        (r || 0 === r) && (t += r),
        t += ' TTS-product-icon" >',
        (r = c.webSitequan) ? r = r.call(b, {
            hash: {},
            data: e
        }) : (r = b.webSitequan, r = typeof r === u ? r.apply(b) : r),
        t += v(r) + "</span>\n    <!--",
        r = c["if"].call(b, b.shopOwner, {
            hash: {},
            inverse: w.noop,
            fn: w.program(10, k, e),
            data: e
        }),
        (r || 0 === r) && (t += r),
        t += "-->\n\n    ",
        r = c["if"].call(b, b.sales, {
            hash: {},
            inverse: w.program(17, o, e),
            fn: w.program(15, n, e),
            data: e
        }),
        (r || 0 === r) && (t += r),
        t += "\n  </p>\n</div>"
    }),
    this.JST["bijia/taobao.tuan"] = d.template(function(a, b, c, d, e) {
        function f(a, b) {
            var d, e, f, i = "";
            return i += "\n    <li class=",
            f = {
                hash: {},
                inverse: k.program(4, h, b),
                fn: k.program(2, g, b),
                data: b
            },
            d = c.lt || a.lt,
            e = d ? d.call(a, (d = b, null == d || d === !1 ? d: d.index), 3, f) : l.call(a, "lt", (d = b, null == d || d === !1 ? d: d.index), 3, f),
            (e || 0 === e) && (i += e),
            i += '>\n      <a class="TTS-list-product-img" href=',
            (e = c.clickUrl) ? e = e.call(a, {
                hash: {},
                data: b
            }) : (e = a.clickUrl, e = typeof e === m ? e.apply(a) : e),
            i += n(e) + ' target="_blank">\n        <img class="tk" src=',
            f = {
                hash: {},
                data: b
            },
            i += n((d = c.imgCDN || a.imgCDN, d ? d.call(a, 70, 70, a.picUrl, f) : l.call(a, "imgCDN", 70, 70, a.picUrl, f))) + '>\n      </a>\n      <p class="TTS-list-product-detail">\n        <span class="src-price"><em>&yen;</em>',
            (e = c.price) ? e = e.call(a, {
                hash: {},
                data: b
            }) : (e = a.price, e = typeof e === m ? e.apply(a) : e),
            i += n(e) + "</span>\n      </p>\n    </li>\n  "
        }
        function g(a, b) {
            return '"TTS-list-right-head"'
        }
        function h(a, b) {
            return '"TTS-list-right-tail"'
        }
        this.compilerInfo = [4, ">= 1.0.0"],
        c = this.merge(c, a.helpers),
        e = e || {};
        var i, j = "",
        k = this,
        l = c.helperMissing,
        m = "function",
        n = this.escapeExpression;
        return j += '<span class="bijia-tuan-title TTS-left"></span>\n<ul class="TTS-tuan-list TTS-left" data-tts-log="Bottomtab_tuan_click">\n  ',
        i = c.each.call(b, b.list, {
            hash: {},
            inverse: k.noop,
            fn: k.program(1, f, e),
            data: e
        }),
        (i || 0 === i) && (j += i),
        j += '\n</ul>\n<a class="bijia-more-tuan-unclicked TTS-left TTS-list-right-tail" href="',
        (i = c.more) ? i = i.call(b, {
            hash: {},
            data: e
        }) : (i = b.more, i = typeof i === m ? i.apply(b) : i),
        j += n(i) + '" target="_blank" data-tts-log="Bottomtab_tuan_more_click"></a>'
    }),
    this.JST["bijia/taobao.tuan.pop"] = d.template(function(a, b, c, d, e) {
        this.compilerInfo = [4, ">= 1.0.0"],
        c = this.merge(c, a.helpers),
        e = e || {};
        var f, g, h, i = "",
        j = "function",
        k = this.escapeExpression,
        l = c.helperMissing;
        return i += '<div class="TTS-bijia-pop TTS-bijia-tuan-pop" data-tts-log="Bottomtab_tuan_magnify_click">\n  <i class="TTS-pointer bijia-TTS_icon_down"></i>\n  <div class="TTS-product-img">\n    <a href=',
        (f = c.clickUrl) ? f = f.call(b, {
            hash: {},
            data: e
        }) : (f = b.clickUrl, f = typeof f === j ? f.apply(b) : f),
        i += k(f) + ' target="_blank"><img class="tk" src=',
        h = {
            hash: {},
            data: e
        },
        i += k((f = c.imgCDN || b.imgCDN, f ? f.call(b, 200, 200, b.picUrl, h) : l.call(b, "imgCDN", 200, 200, b.picUrl, h))) + '></a>\n  </div>\n  <div class="TTS-product-title">\n    <a href=',
        (g = c.clickUrl) ? g = g.call(b, {
            hash: {},
            data: e
        }) : (g = b.clickUrl, g = typeof g === j ? g.apply(b) : g),
        i += k(g) + ' target="_blank">',
        (g = c.title) ? g = g.call(b, {
            hash: {},
            data: e
        }) : (g = b.title, g = typeof g === j ? g.apply(b) : g),
        i += k(g) + '</a>\n  </div>\n  <p>\n    <span class="TTS-product-zhekou">',
        (g = c.zhekou) ? g = g.call(b, {
            hash: {},
            data: e
        }) : (g = b.zhekou, g = typeof g === j ? g.apply(b) : g),
        i += k(g) + '</span>\n    <span class="TTS-product-price"><em>&yen;</em>',
        (g = c.price) ? g = g.call(b, {
            hash: {},
            data: e
        }) : (g = b.price, g = typeof g === j ? g.apply(b) : g),
        i += k(g) + '</span>\n  </p>\n  <p class="TTS-product-countdown-wrap">\n    <span class="TTS-product-countdown" data-start="',
        (g = c.startTimeStr) ? g = g.call(b, {
            hash: {},
            data: e
        }) : (g = b.startTimeStr, g = typeof g === j ? g.apply(b) : g),
        i += k(g) + '" data-end="',
        (g = c.overTimeStr) ? g = g.call(b, {
            hash: {},
            data: e
        }) : (g = b.overTimeStr, g = typeof g === j ? g.apply(b) : g),
        i += k(g) + '"></span>\n  </p>\n</div>'
    }),
    this.JST["juzi/home.list"] = d.template(function(a, b, c, d, e) {
        function f(a, b) {
            var d, e = "";
            return e += '\n        <a class="TTS-bijia-more-btn juzi-more-same-unclicked TTS-left" href=',
            (d = c.more) ? d = d.call(a, {
                hash: {},
                data: b
            }) : (d = a.more, d = typeof d === i ? d.apply(a) : d),
            e += j(d) + ' target="_blank" data-tts-log="Bottomtab_group_more_click"></a>\n      '
        }
        this.compilerInfo = [4, ">= 1.0.0"],
        c = this.merge(c, a.helpers),
        e = e || {};
        var g, h = "",
        i = "function",
        j = this.escapeExpression,
        k = this;
        return h += '<div id="TTS_bijia_wrap" class="JUZI_tts_cooper TTS_bijia_wrap ',
        (g = c.host) ? g = g.call(b, {
            hash: {},
            data: e
        }) : (g = b.host, g = typeof g === i ? g.apply(b) : g),
        h += j(g) + '">\n  <a class="TTS_logo_bijia juzi-logo TTS-left" href="http://www.taotaosou.com/" target="_blank" data-tts-log="Bottomtab_logo_click"></a>\n  <div class="TTS-products-wrap TTS-left">\n    <div class="TTS-list-left-wrap TTS-left">\n      <div class="TTS-list-left TTS-left"></div>\n      ',
        g = c["if"].call(b, b.more, {
            hash: {},
            inverse: k.noop,
            fn: k.program(1, f, e),
            data: e
        }),
        (g || 0 === g) && (h += g),
        h += '\n    </div>\n  </div>\n  <a class="TTS-bijia-min-btn juzi-fold TTS-right"></a>\n  <div class="TTS-banner-wrap TTS-right">\n  </div>\n  <div class="TTS-list-right-wrap TTS-tuan TTS-right">\n    <div class="TTS-list-right TTS-tumeiti TTS-left"></div>\n  </div>\n  <span class="TTS-juzi-logo juzi-juzi-logo">\n  </span>\n</div>'
    }),
    this.JST["juzi/home.list.item"] = d.template(function(a, b, c, d, e) {
        function f(a, b) {
            var d, e, f, l = "";
            return l += '\n      <li class="',
            f = {
                hash: {},
                inverse: n.program(4, h, b),
                fn: n.program(2, g, b),
                data: b
            },
            d = c.lt || a.lt,
            e = d ? d.call(a, (d = b, null == d || d === !1 ? d: d.index), 8, f) : o.call(a, "lt", (d = b, null == d || d === !1 ? d: d.index), 8, f),
            (e || 0 === e) && (l += e),
            l += " ",
            f = {
                hash: {},
                inverse: n.noop,
                fn: n.program(6, i, b),
                data: b
            },
            d = c.is || a.is,
            e = d ? d.call(a, (d = b, null == d || d === !1 ? d: d.index), 7, f) : o.call(a, "is", (d = b, null == d || d === !1 ? d: d.index), 7, f),
            (e || 0 === e) && (l += e),
            e = c["if"].call(a, a.isMin, {
                hash: {},
                inverse: n.noop,
                fn: n.program(8, j, b),
                data: b
            }),
            (e || 0 === e) && (l += e),
            l += '">\n        <a class="TTS-list-product-img" href=',
            (e = c.clickUrl) ? e = e.call(a, {
                hash: {},
                data: b
            }) : (e = a.clickUrl, e = typeof e === p ? e.apply(a) : e),
            l += q(e) + ' target="_blank">\n          <img class="tk" src=',
            (e = c.ttsPicUrl) ? e = e.call(a, {
                hash: {},
                data: b
            }) : (e = a.ttsPicUrl, e = typeof e === p ? e.apply(a) : e),
            l += q(e) + '>\n        </a>\n        <p class="TTS-list-product-detail TTS-list-product-juxiao">\n          <span class="src-price"><em>&yen;</em>',
            (e = c.promoPrice) ? e = e.call(a, {
                hash: {},
                data: b
            }) : (e = a.promoPrice, e = typeof e === p ? e.apply(a) : e),
            l += q(e) + "</span>\n        </p>\n          ",
            e = c["if"].call(a, a.isMin, {
                hash: {},
                inverse: n.noop,
                fn: n.program(10, k, b),
                data: b
            }),
            (e || 0 === e) && (l += e),
            l += "\n      </li>\n    "
        }
        function g(a, b) {
            return "TTS-list-left-head"
        }
        function h(a, b) {
            return "TTS-list-left-tail"
        }
        function i(a, b) {
            return "TTS-list-left-last"
        }
        function j(a, b) {
            return "TTS-list-lowestPrice"
        }
        function k(a, b) {
            return '\n            <div class="tip-lowestPrice">\n              <span>最低价</span>\n              <em class="bijia-arrow-down"></em>\n            </div>\n          '
        }
        this.compilerInfo = [4, ">= 1.0.0"],
        c = this.merge(c, a.helpers),
        e = e || {};
        var l, m = "",
        n = this,
        o = c.helperMissing,
        p = "function",
        q = this.escapeExpression;
        return m += '<span class="bijia-like-title TTS-left"></span>\n\n<ul class="TTS-left" data-tts-log="Bottomtab_juzi_click">\n    ',
        l = c.each.call(b, b.list, {
            hash: {},
            inverse: n.noop,
            fn: n.program(1, f, e),
            data: e
        }),
        (l || 0 === l) && (m += l),
        m += "\n</ul>"
    }),
    this.JST["juzi/juxiao"] = d.template(function(a, b, c, d, e) {
        function f(a, b) {
            var d, e, f, l = "";
            return l += '\n    <li class="TTS-list-left-head ',
            d = c["if"].call(a, a.isMin, {
                hash: {},
                inverse: q.noop,
                fn: q.program(2, g, b),
                data: b
            }),
            (d || 0 === d) && (l += d),
            l += '">\n      <a class="TTS-list-product-img" href=',
            (d = c.clickUrl) ? d = d.call(a, {
                hash: {},
                data: b
            }) : (d = a.clickUrl, d = typeof d === o ? d.apply(a) : d),
            l += p(d) + ' target="_blank">\n        <img width="70" height="70" class="tk" src=',
            (d = c.ttsPicUrl) ? d = d.call(a, {
                hash: {},
                data: b
            }) : (d = a.ttsPicUrl, d = typeof d === o ? d.apply(a) : d),
            l += p(d) + '>\n      </a>\n\n      <p class="TTS-list-product-detail">\n        <span class="src-price"><em>&yen;</em>',
            (d = c.promoPrice) ? d = d.call(a, {
                hash: {},
                data: b
            }) : (d = a.promoPrice, d = typeof d === o ? d.apply(a) : d),
            l += p(d),
            d = c["if"].call(a, a.isMin, {
                hash: {},
                inverse: q.noop,
                fn: q.program(4, h, b),
                data: b
            }),
            (d || 0 === d) && (l += d),
            l += '</span>\n      </p>\n      <span class="src-',
            f = {
                hash: {},
                inverse: q.noop,
                fn: q.program(6, i, b),
                data: b
            },
            d = c.jdName || a.jdName,
            e = d ? d.call(a, a.webSite, f) : r.call(a, "jdName", a.webSite, f),
            (e || 0 === e) && (l += e),
            l += ' src-icon">',
            f = {
                hash: {},
                inverse: q.noop,
                fn: q.program(6, i, b),
                data: b
            },
            d = c.sourceShort || a.sourceShort,
            e = d ? d.call(a, a.webSite, f) : r.call(a, "sourceShort", a.webSite, f),
            (e || 0 === e) && (l += e),
            l += '</span>\n\n      <div class="juzi_sales_number">',
            e = c["if"].call(a, a.sales, {
                hash: {},
                inverse: q.program(10, k, b),
                fn: q.program(8, j, b),
                data: b
            }),
            (e || 0 === e) && (l += e),
            l += "</div>\n    </li>\n  "
        }
        function g(a, b) {
            return "TTS-list-lowestPrice"
        }
        function h(a, b) {
            return '<span\n            class="juzi_ismin_price">低价</span> '
        }
        function i(a, b) {
            var c = "";
            return c
        }
        function j(a, b) {
            var d, e = "";
            return e += "<span>销量</span>",
            (d = c.sales) ? d = d.call(a, {
                hash: {},
                data: b
            }) : (d = a.sales, d = typeof d === o ? d.apply(a) : d),
            e += p(d)
        }
        function k(a, b) {
            var d;
            return d = c["if"].call(a, a.feedbackCount, {
                hash: {},
                inverse: q.noop,
                fn: q.program(11, l, b),
                data: b
            }),
            d || 0 === d ? d: ""
        }
        function l(a, b) {
            var d, e = "";
            return e += "\n        <span>评论</span>",
            (d = c.feedbackCount) ? d = d.call(a, {
                hash: {},
                data: b
            }) : (d = a.feedbackCount, d = typeof d === o ? d.apply(a) : d),
            e += p(d)
        }
        this.compilerInfo = [4, ">= 1.0.0"],
        c = this.merge(c, a.helpers),
        e = e || {};
        var m, n = "",
        o = "function",
        p = this.escapeExpression,
        q = this,
        r = c.helperMissing;
        return n += '<div class="juzi_juxiao_header">\n  <span>推荐</span>\n</div>\n<div class="juzi_same_wrap clearfix">\n<ul>\n  ',
        m = c.each.call(b, b.list, {
            hash: {},
            inverse: q.noop,
            fn: q.program(1, f, e),
            data: e
        }),
        (m || 0 === m) && (n += m),
        n += "\n  </ul>\n</div>"
    }),
    this.JST["juzi/juzi"] = d.template(function(a, b, c, d, e) {
        function f(a, b) {
            var d, e = "";
            return e += '\n        <a class="TTS-bijia-more-btn juzi-more-same-clicked TTS-left juzi-more-btn" href=',
            (d = c.more) ? d = d.call(a, {
                hash: {},
                data: b
            }) : (d = a.more, d = typeof d === i ? d.apply(a) : d),
            e += j(d) + ' target="_blank" data-tts-log="Bottomtab_recom_more_click"></a>\n      '
        }
        this.compilerInfo = [4, ">= 1.0.0"],
        c = this.merge(c, a.helpers),
        e = e || {};
        var g, h = "",
        i = "function",
        j = this.escapeExpression,
        k = this;
        return h += '<div id="TTS_bijia_wrap" class="JUZI_tts_cooper TTS_bijia_wrap">\n  <a class="TTS_logo_juzi juzi-logo TTS-left" href="http://www.taotaosou.com/" target="_blank" data-tts-log="Bottomtab_logo_click"></a>\n  <div class="TTS-qutu-wrap TTS-left"></div>\n  <div class="TTS-products-wrap TTS-left">\n    <div class="TTS-list-left-wrap">\n\n      <div class="TTS-list-left TTS-left"></div>\n      ',
        g = c["if"].call(b, b.more, {
            hash: {},
            inverse: k.noop,
            fn: k.program(1, f, e),
            data: e
        }),
        (g || 0 === g) && (h += g),
        h += '\n    </div>\n  </div>\n  <a class="TTS-bijia-min-btn juzi-fold TTS-left"></a>\n  <span class="TTS-juzi-logo juzi-juzi-logo">\n  </span>\n</div>'
    }),
    this.JST["juzi/juzi.mid"] = d.template(function(a, b, c, d, e) {
        return this.compilerInfo = [4, ">= 1.0.0"],
        c = this.merge(c, a.helpers),
        e = e || {},
        '<div class="cqol JUZI_tts_mid juzi-feature" id="TTK-sub-wrap">\n  <div class="TK-mind-sub">\n    <div class="TK-mind-sub-nav">\n      <i class="TK-mind-sub-star juzi-soso-logo"></i>\n\n      <div class="TK-mind-sub-qutu">\n        <i class="TK-mind-sub-icon"></i>\n        <i class="juzi-price_curve_icon"></i>\n        <span class="J-TK-mind-sub-icon-text">价格曲线</span>\n      </div>\n      <div class="TK-mind-sub-under-warp J-TK-mind-sub-under-warp">\n      </div>\n    </div>\n    <div class="TK-qutu-sub-warp">\n      <i class="TK-qutu-sub-pointer"></i>\n\n      <div class="TK-qutu-sub-con J-TK-qutu-sub-con">\n        <div class="TK-qutu-sub-price">\n\n        </div>\n        <div class="TK-qutu-sub-data">\n\n        </div>\n        <canvas id="TK-canvas-sub-base" class="TK-canvas-sub-base" style="width: 440px; height: 250px;" width="880"\n                height="500"></canvas>\n        <canvas id="TK-canvas-sub-layout" class="TK-canvas-sub-layout" style="width: 440px; height: 250px;" width="880"\n                height="500"></canvas>\n        <div class="TK-qutu-sub-msg">\n          <div class="TK-qutu-sub-msg-wrap">\n\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>'
    }),
    this.JST["juzi/juzi.qutu"] = d.template(function(a, b, c, d, e) {
        return this.compilerInfo = [4, ">= 1.0.0"],
        c = this.merge(c, a.helpers),
        e = e || {},
        '<div class="TK-price-btn juzi-price">\n  <div class="TK-qutu-warp">\n    <i class="TK-qutu-pointer"></i>\n    <div class="TK-qutu-con J-TK-qutu-con">\n      <div class="TK-qutu-price">\n      </div>\n      <div class="TK-qutu-data">\n      </div>\n      <canvas id="TK-canvas-base" class="TK-canvas-base" style="width: 440px; height: 250px;" width="880" height="500"></canvas>\n      <canvas id="TK-canvas-layout" class="TK-canvas-layout" style="width: 440px; height: 250px;" width="880" height="500"></canvas>\n      <div class="TK-qutu-msg">\n        <div class="TK-qutu-msg-wrap">\n        </div>\n      </div>\n    </div>\n  </div>\n</div>'
    }),
    this.JST["juzi/taobao.same"] = d.template(function(a, b, c, d, e) {
        function f(a, b) {
            return '"Bottomtab_group_click"'
        }
        function g(a, b) {
            return '"Bottomtab_recom_click"'
        }
        function h(a, b) {
            var d, e, f, g = "";
            return g += '\n    <li class="TTS-list-left-head ',
            d = c["if"].call(a, a.isMin, {
                hash: {},
                inverse: t.noop,
                fn: t.program(6, i, b),
                data: b
            }),
            (d || 0 === d) && (g += d),
            g += '">\n      <a class="TTS-list-product-img" href=',
            (d = c.clickUrl) ? d = d.call(a, {
                hash: {},
                data: b
            }) : (d = a.clickUrl, d = typeof d === r ? d.apply(a) : d),
            g += s(d) + ' target="_blank">\n        <img width="70" height="70" class="tk" src=',
            (d = c.ttsPicUrl) ? d = d.call(a, {
                hash: {},
                data: b
            }) : (d = a.ttsPicUrl, d = typeof d === r ? d.apply(a) : d),
            g += s(d) + '>\n      </a>\n\n      <p class="TTS-list-product-detail">\n        <span class="src-price"><em>&yen;</em>',
            (d = c.promoPrice) ? d = d.call(a, {
                hash: {},
                data: b
            }) : (d = a.promoPrice, d = typeof d === r ? d.apply(a) : d),
            g += s(d),
            d = c["if"].call(a, a.isMin, {
                hash: {},
                inverse: t.noop,
                fn: t.program(8, j, b),
                data: b
            }),
            (d || 0 === d) && (g += d),
            g += '</span>\n      </p>\n      <span class="src-',
            f = {
                hash: {},
                inverse: t.noop,
                fn: t.program(10, k, b),
                data: b
            },
            d = c.jdName || a.jdName,
            e = d ? d.call(a, a.webSite, f) : u.call(a, "jdName", a.webSite, f),
            (e || 0 === e) && (g += e),
            g += ' src-icon">',
            f = {
                hash: {},
                inverse: t.noop,
                fn: t.program(10, k, b),
                data: b
            },
            d = c.sourceShort || a.sourceShort,
            e = d ? d.call(a, a.webSite, f) : u.call(a, "sourceShort", a.webSite, f),
            (e || 0 === e) && (g += e),
            g += '</span>\n\n      <div class="juzi_sales_number">',
            e = c["if"].call(a, a.sales, {
                hash: {},
                inverse: t.program(14, m, b),
                fn: t.program(12, l, b),
                data: b
            }),
            (e || 0 === e) && (g += e),
            g += "</div>\n    </li>\n  "
        }
        function i(a, b) {
            return "TTS-list-lowestPrice"
        }
        function j(a, b) {
            return '<span\n            class="juzi_ismin_price">低价</span> '
        }
        function k(a, b) {
            var c = "";
            return c
        }
        function l(a, b) {
            var d, e = "";
            return e += "<span>销量</span>",
            (d = c.sales) ? d = d.call(a, {
                hash: {},
                data: b
            }) : (d = a.sales, d = typeof d === r ? d.apply(a) : d),
            e += s(d)
        }
        function m(a, b) {
            var d;
            return d = c["if"].call(a, a.feedbackCount, {
                hash: {},
                inverse: t.noop,
                fn: t.program(15, n, b),
                data: b
            }),
            d || 0 === d ? d: ""
        }
        function n(a, b) {
            var d, e = "";
            return e += "\n        <span>评论</span>",
            (d = c.feedbackCount) ? d = d.call(a, {
                hash: {},
                data: b
            }) : (d = a.feedbackCount, d = typeof d === r ? d.apply(a) : d),
            e += s(d)
        }
        function o(a, b) {
            var d, e = "";
            return e += '\n    <a class="TTS-bijia-more-btn juzi-more-same-clicked TTS-left" href=',
            (d = c.more) ? d = d.call(a, {
                hash: {},
                data: b
            }) : (d = a.more, d = typeof d === r ? d.apply(a) : d),
            e += s(d) + ' target="_blank"\n       data-tts-log="Bottomtab_recom_more_click"></a>\n  '
        }
        this.compilerInfo = [4, ">= 1.0.0"],
        c = this.merge(c, a.helpers),
        e = e || {};
        var p, q = "",
        r = "function",
        s = this.escapeExpression,
        t = this,
        u = c.helperMissing;
        return q += '<div class="juzi_same_wrap clearfix">\n<ul data-tts-log=',
        p = c["if"].call(b, b.isSameList, {
            hash: {},
            inverse: t.program(3, g, e),
            fn: t.program(1, f, e),
            data: e
        }),
        (p || 0 === p) && (q += p),
        q += ">\n  ",
        p = c.each.call(b, b.list, {
            hash: {},
            inverse: t.noop,
            fn: t.program(5, h, e),
            data: e
        }),
        (p || 0 === p) && (q += p),
        q += "\n  </ul>\n  ",
        p = c["if"].call(b, b.more, {
            hash: {},
            inverse: t.noop,
            fn: t.program(17, o, e),
            data: e
        }),
        (p || 0 === p) && (q += p),
        q += "\n</div>"
    }),
    this.JST["juzi/taobao.same.pop"] = d.template(function(a, b, c, d, e) {
        function f(a, b) {
            return '"Bottomtab_group_magnify_click"'
        }
        function g(a, b) {
            var d, e = "";
            return e += " ",
            d = c["if"].call(a, a.isProList, {
                hash: {},
                inverse: w.program(6, i, b),
                fn: w.program(4, h, b),
                data: b
            }),
            (d || 0 === d) && (e += d),
            e
        }
        function h(a, b) {
            var d, e = "";
            return e += '"Bottomtab_',
            (d = c.isProList) ? d = d.call(a, {
                hash: {},
                data: b
            }) : (d = a.isProList, d = typeof d === u ? d.apply(a) : d),
            e += v(d) + '_magnify_click"'
        }
        function i(a, b) {
            return '"Bottomtab_recom_magnify_click"'
        }
        function j(a, b) {
            var c = "";
            return c
        }
        function k(a, b) {
            var d, e = "";
            return e += "\n    ",
            d = c["if"].call(a, a.shopType, {
                hash: {},
                inverse: w.program(13, m, b),
                fn: w.program(11, l, b),
                data: b
            }),
            (d || 0 === d) && (e += d),
            e += "\n  "
        }
        function l(a, b) {
            return '\n      <span class="TTS-product-owner">网站自营</span>\n    '
        }
        function m(a, b) {
            return '\n      <span class="TTS-product-owner">第三方</span>\n    '
        }
        function n(a, b) {
            var d, e = "";
            return e += '\n    <span class="TTS-product-sales">销量：',
            (d = c.sales) ? d = d.call(a, {
                hash: {},
                data: b
            }) : (d = a.sales, d = typeof d === u ? d.apply(a) : d),
            e += v(d) + "</span>\n  "
        }
        function o(a, b) {
            var d, e = "";
            return e += "\n    ",
            d = c["if"].call(a, a.com, {
                hash: {},
                inverse: w.noop,
                fn: w.program(18, p, b),
                data: b
            }),
            (d || 0 === d) && (e += d),
            e += "\n  "
        }
        function p(a, b) {
            var d, e = "";
            return e += '\n      <span class="TTS-product-comment">',
            (d = c.com) ? d = d.call(a, {
                hash: {},
                data: b
            }) : (d = a.com, d = typeof d === u ? d.apply(a) : d),
            e += v(d) + "条评论</span>\n    "
        }
        this.compilerInfo = [4, ">= 1.0.0"],
        c = this.merge(c, a.helpers),
        e = e || {};
        var q, r, s, t = "",
        u = "function",
        v = this.escapeExpression,
        w = this,
        x = c.helperMissing;
        return t += '<div class="TTS-bijia-pop TTS-bijia-same-pop" data-tts-log=',
        q = c["if"].call(b, b.isSameList, {
            hash: {},
            inverse: w.program(3, g, e),
            fn: w.program(1, f, e),
            data: e
        }),
        (q || 0 === q) && (t += q),
        t += '>\n<div class="TTS-product-img">\n  <a href=',
        (q = c.clickUrl) ? q = q.call(b, {
            hash: {},
            data: e
        }) : (q = b.clickUrl, q = typeof q === u ? q.apply(b) : q),
        t += v(q) + ' target="_blank"><img class="tk" src=',
        (q = c.media) ? q = q.call(b, {
            hash: {},
            data: e
        }) : (q = b.media, q = typeof q === u ? q.apply(b) : q),
        t += v(q) + '></a>\n</div>\n<div class="TTS-product-title">\n  <a href=',
        (q = c.clickUrl) ? q = q.call(b, {
            hash: {},
            data: e
        }) : (q = b.clickUrl, q = typeof q === u ? q.apply(b) : q),
        t += v(q) + ' target="_blank">',
        (q = c.title) ? q = q.call(b, {
            hash: {},
            data: e
        }) : (q = b.title, q = typeof q === u ? q.apply(b) : q),
        t += v(q) + '</a>\n</div>\n<p>\n  <span class="TTS-product-price"><em>&yen;</em>',
        (q = c.promoPrice) ? q = q.call(b, {
            hash: {},
            data: e
        }) : (q = b.promoPrice, q = typeof q === u ? q.apply(b) : q),
        t += v(q) + '</span>\n</p>\n<p class="TTS-product-source">\n  <span class="src-',
        s = {
            hash: {},
            inverse: w.noop,
            fn: w.program(8, j, e),
            data: e
        },
        q = c.jdName || b.jdName,
        r = q ? q.call(b, b.webSite, s) : x.call(b, "jdName", b.webSite, s),
        (r || 0 === r) && (t += r),
        t += ' TTS-product-icon" >',
        s = {
            hash: {},
            inverse: w.noop,
            fn: w.program(8, j, e),
            data: e
        },
        q = c.source || b.source,
        r = q ? q.call(b, b.webSite, s) : x.call(b, "source", b.webSite, s),
        (r || 0 === r) && (t += r),
        t += "</span>\n  ",
        r = c["if"].call(b, b.shopOwner, {
            hash: {},
            inverse: w.noop,
            fn: w.program(10, k, e),
            data: e
        }),
        (r || 0 === r) && (t += r),
        t += "\n\n  ",
        r = c["if"].call(b, b.sales, {
            hash: {},
            inverse: w.program(17, o, e),
            fn: w.program(15, n, e),
            data: e
        }),
        (r || 0 === r) && (t += r),
        t += "\n</p>\n</div>"
    }),
    this.JST
}),
__tk__define("utils", ["./lib/jquery", "./host"],
function(a, b, c) {
    function d() {
        var a = "",
        b = "",
        c = "",
        d = "",
        e = "";
        return s ? (s.getAttribute("data-id") && (a = s.getAttribute("data-id")), s.getAttribute("data-source") && (b = s.getAttribute("data-source")), s.getAttribute("data-guid") && (c = s.getAttribute("data-guid")), s.getAttribute("data-message") && (e = s.getAttribute("data-message")), s.getAttribute("data-version") && (d = s.getAttribute("data-version"))) : p("script").each(function(b, c) {
            c.src && c.src.match(/_tts_browser_center.*id/) && (a = c.src.replace(/.*id[^id]?/, "").replace(/&.*/, ""))
        }),
        {
            id: a,
            browser: b,
            guid: c,
            message: e,
            version: d
        }
    }
    function e(a, b) {
        b.t = (new Date).getTime(),
        b.z1_guid = l,
        b.ditch = i,
        b.v = k,
        h.load({
            url: a,
            data: b
        })
    }
    function f(a, b) {
        b.t = (new Date).getTime(),
        b.guid = l,
        b.ditch = i,
        b.v = k,
        b.website = q.webSite,
        a += p.param(b),
        h.load({
            url: a
        })
    }
    function g(a, b) {
        b.t = (new Date).getTime(),
        b.z1_guid = l,
        b.ditch = i,
        b.v = k,
        h.postImg({
            url: a,
            data: b
        })
    }
    var h, i, j, k, l, m, n, o, p = a("./lib/jquery"),
    q = a("./host"),
    r = !1,
    s = document.getElementById("J---TK-load"),
    t = "//log.taotaosou.com/";
    l = d().guid,
    o = d().message,
    k = d().version || "",
    m = d().browser || "",
    n = d().id || "",
    i = d().id,
    j = i.match(/^001104|^001100|^000100/),
    h = {
        DITCH_ID: i,
        isManualDId: j,
        GUID: l,
        BROWSER: m,
        QDID: n,
        MSGFLAG: o,
        load: function(a) {
            var b, c = document.createElement("script"),
            d = a.url;
            if (p("#TK-log")[0] ? b = p("#TK-log")[0] : (b = document.createElement("div"), b.id = "TK-log", document.body.appendChild(b)), a.data) for (var e in a.data) d += d.match(/\?/) ? "&": "?",
            d += e + "=" + a.data[e];
            c.type = "text/javascript",
            c.charset = "utf-8",
            c.async = !0,
            c.onload = function() {
                a.callback && a.callback(c)
            },
            c.onreadystatechange = function() { ("loaded" === c.readyState || "complete" === c.readyState) && a.callback && a.callback(c)
            },
            c.src = d,
            b.appendChild(c)
        },
        site: function() {
            var a = "";
            return a = q.isTBList ? "TB_List": q.isTBDetail ? "TB_Detail": q.isTMList ? "TM_List": q.isTMDetail ? "TM_Detail": q.isTBFav ? "TB_Favorite": q.isTBShop ? "TB_SHOP": q.isTMShop ? "TM_SHOP": q.isMLSList ? "MLS_List": q.isMGJList ? "MGJ_List": q.isMGJDetail ? "MGJ_Detail": q.isMLSDetail ? "MLS_Detail": q.isTrade ? "TB_Trade": q.isTBCart ? "TB_Cart": q.isVIPCart ? "VIP_Cart": q.isJDCart ? "JD_Cart": q.isMLSCart ? "MLS_Cart": q.isMGJCart ? "MGJ_Cart": q.isTMCart ? "TM_Cart": q.isB2CList ? "JD_List": q.isB2CDetail ? "JD_Detail": q.isYHDList ? "YHD_List": q.isYHDDetail ? "YHD_Detail": q.isSuningDetail ? "suning_Detail": q.isSuningList ? "suning_List": q.isVjiaDetial ? "vjia_Detail": q.isVjiaList ? "vjia_List": q.isDDDetail ? "dangdang_Detail": q.isDDList ? "dangdang_List": q.isAMXList ? "amazon_List": q.isAMXDetail ? "amazon_Detail": q.isGMList ? "gome_List": q.isGMDetail ? "gome_Detail": q.isVipList ? "vip_List": q.isVipDetail ? "vip_Detail": q.isHomeTaobao ? "TB_home": q.isHomeTmall ? "TM_home": q.isHomeJD ? "JD_home": q.isHomeMGJ ? "MGJ_home": q.isHomeMLS ? "MLS_home": q.isHomeVIP ? "VIP_home": "ELSE"
        },
        outer_code: function() {
            var a = "";
            return q.isMGJList || q.isMGJDetail ? a = "mgj001": (q.isMLSList || q.isMLSDetail) && (a = "mls001"),
            a
        },
        stat: function(a, b) {
            var c = a;
            b && (c = this.site() + "_" + a),
            new e(t + "browser_statistics.do", {
                type: c
            })
        },
        statLog: function(a) {
            var b = "//dclog.taotaosou.com/statistics.do";
            new e(b, a)
        },
        kLog: function(a) {
            f("//klog.taotaosou.com/stat?", a)
        },
        statLog_one: function(a) {
            var b = "//dclog.taotaosou.com/statistics.do";
            new e(b, a)
        },
        statLog_yx: function(a) {
            var b = "//pub.taotaosou.com/updateHits.do";
            new e(b, a)
        },
        statLog_img: function(a) {
            var b = "//dclog.taotaosou.com/statistics.do";
            new g(b, a)
        },
        monitor: function(a) {
            function b() {
                var a = {
                    msie: !1,
                    firefox: !1,
                    opera: !1,
                    safari: !1,
                    chrome: !1,
                    netscape: !1,
                    appname: "unknown",
                    version: 0
                },
                b = window.navigator.userAgent.toLowerCase();
                return /(msie|firefox|opera|chrome|netscape)\D+(\d[\d.]*)/.test(b) ? (a[RegExp.$1] = !0, a.appname = RegExp.$1, a.version = RegExp.$2) : /version\D+(\d[\d.]*).*safari/.test(b) && (a.safari = !0, a.appname = "safari", a.version = RegExp.$2),
                a
            }
            function c(a) {
                var b = t + "frontmonitor.do";
                new e(b, a)
            }
            var d;
            return r ? !0 : (d = b(), c({
                ditch: i,
                info: a,
                url: "url: " + location.href,
                browser: d.appname + " " + d.version
            }), void(r = !0))
        },
        statReferrer: function() {
            var a = t + "url_stat.do",
            b = {
                refererUrl: encodeURIComponent(document.referrer)
            };
            new e(a, b)
        },
        sliceID: function(a) {
            if (!a) return "";
            var b = /(\?|\&)(item_id|id)=[0-9]*/;
            return "string" == typeof a && a.match(b) && a.match(b)[0] ? a.match(b)[0].replace(/.*=/, "") : a.match(/item.jd.com/) ? a.match(/[0-9].*\./)[0].slice(0, -1) : a.match(/www.meilishuo.com/) ? a.match(/([0-9]+)/)[1] : a.match(/shop.mogujie.com\/detail/) ? a.match(/detail\/(\w+)\?/)[1] : a.match(/www.vip.com\/detail/) ? this.getUrlParam(a, "mid") : void 0
        },
        getCid: function() {
            var a = "0";
            return p("#J_itemViewed")[0] && p("#J_itemViewed").attr("catid") ? a = p("#J_itemViewed").attr("catid") : document.getElementById("tb-beacon-aplus") ? (a = document.getElementById("tb-beacon-aplus").getAttribute("exparams"), a.match(/^.*item%5f([0-9]{3,9})&.*$/) && (a = a.match(/^.*item%5f([0-9]{3,9})&.*$/)[1])) : q.isB2CDetail && (a = window.pageConfig.product.cat.toString()),
            a
        },
        imgload: function(a, b) {
            if (!a || "IMG" !== a.nodeName || !a.src) return ! 1;
            var c = new Image,
            d = a.src;
            c.onload = function() {
                b()
            },
            d += d.match(/\?/) ? "&t=": "?t=",
            c.src = d + (new Date).getTime()
        },
        postImg: function(a) {
            var b, c = document.createElement("img"),
            d = a.url;
            if (a.data) for (var e in a.data) d += d.match(/\?/) ? "&": "?",
            d += e + "=" + a.data[e];
            c.setAttribute("src", d),
            c.setAttribute("width", 0),
            c.setAttribute("height", 0),
            c.style.display = "none",
            c.onerror = null,
            document.getElementById("TK-log") ? b = document.getElementById("TK-log") : (b = document.createElement("div"), b.id = "TK-log", document.body.appendChild(b)),
            b.appendChild(c)
        },
        baidu: function() {
            var a = ("https:" === document.location.protocol ? "https://": "http://") + "hm.baidu.com/h.js?";
            q.isTBList && h.load({
                url: a + "1508c6f288326a950463315458c1bc32"
            }),
            q.isTMList && h.load({
                url: a + "1508c6f288326a950463315458c1bc32"
            }),
            q.isDetail && h.load({
                url: a + "bc82a27d708fd3a352f79e347989f026"
            })
        },
        loadCSS: function(a) {
            var b = document.head || document.getElementsByTagName("head")[0],
            c = document.createElement("link");
            c.rel = "stylesheet",
            c.type = "text/css",
            a.match(/\?t=/) || a.match(/&t=/) ? a = a: a += "?t=04261544",
            c.href = a,
            b.appendChild(c)
        },
        loadJS: function(a, b) {
            var c = document.createElement("script");
            c.type = "text/javascript",
            c.charset = "utf-8",
            c.onload = function() {
                b && b(c)
            },
            c.onreadystatechange = function() { ("loaded" === c.readyState || "complete" === c.readyState) && b && b(c)
            },
            c.src = a,
            document.body.appendChild(c)
        },
        getUndertakePage: function(a) {
            var b = "http://www.taotaosou.com/tk.html?",
            c = "http://search.taotaosou.com/search/text?",
            d = "&outer_code=ttk001";
            return ("undefined" == typeof a.id || "" === a.id) && (a.id = ""),
            "" !== a.img || "" !== a.href ? "http://search.taotaosou.com/transfer.htm?" + b + "sourceId=" + a.id + "&website=" + q.webSite + "&title=" + encodeURIComponent(a.title) + "&href=" + encodeURIComponent(a.href) + "&img=" + encodeURIComponent(a.img) + "&utm_medium=ttk": c + "keyword=" + encodeURIComponent(a.title) + "&from=ttk&utm_source=" + this.site() + "&utm_medium=ttk&utm_campaign=TTKbutton" + d
        },
        getRecomPage: function(a) {
            var b = "http://www.taotaosou.com/tk.html?";
            return ("undefined" == typeof a.id || "" === a.id) && (a.id = ""),
            "" !== a.img || "" !== a.href ? "http://search.taotaosou.com/transfer.htm?" + b + "sourceId=" + a.id + "&website=" + q.webSite + "&title=" + encodeURIComponent(a.title) + "&href=" + encodeURIComponent(a.href) + "&img=" + encodeURIComponent(a.img) + "&utm_medium=ttk": "http://www.taotaosou.com"
        },
        getUrlParam: function(a, b) {
            var c = new RegExp(b + "=([^&]*)", "i").exec(a);
            return c && decodeURIComponent(c[1]) || ""
        },
        userData: function() {
            var a = JSON.parse(localStorage.getItem("TK-user-data"));
            return a ? a: {
                status: 0,
                id: "",
                nick: ""
            }
        },
        format: function(a) {
            return 10 > a && (a = "0" + a.toString()),
            a
        },
        chrome: function() {
            return window.navigator.userAgent.match(/chrome/gi) ? !0 : !1
        },
        selectFrom: function(a, b) {
            var c = b - a + 1;
            return Math.floor(Math.random() * c + a)
        },
        isManualInstall: function() {
            return ! d().id || d().id.match(/^(0011|0001).*/) ? !0 : !1
        },
        listProductIdArr: [],
        listProductIds: "",
        getConfig: function() {
            var a = {
                media: {
                    def: !0
                },
                taobao: {
                    def: !0,
                    model: {
                        list: !0,
                        detail: !0,
                        lds: !0,
                        remind: !0,
                        qutu: !0
                    }
                },
                tmt: {
                    def: !0,
                    model: {
                        shopSite: !0,
                        paopao: !0,
                        insert: !0,
                        href: !0,
                        qzone: !0,
                        cps: !0,
                        top: !0
                    }
                }
            };
            return "undefined" != typeof window.TK_config && window.TK_config && (a = p.extend(a, window.TK_config)),
            a
        },
        ttkCollect: function(a) {
            var b, c = [];
            p.each(a,
            function(a, d) { ("taobao" === d.webSite || "tmall" === d.webSite) && (b = {
                    pid: d.sourceId,
                    p: d.promoPrice,
                    m: d.price,
                    sale: 1,
                    cco: d.sales,
                    sco: d.commissionNum,
                    ty: "0"
                },
                c.push(b))
            }),
            h.statLog({
                systemName: "ttk_collect",
                v: encodeURIComponent(JSON.stringify(c))
            })
        },
        getUserLevel: function() {
            var a, b = "";
            return a = {
                0 : "v0",
                1 : "v1",
                2 : "v2",
                3 : "v3",
                4 : "v4",
                5 : "v5",
                6 : "v6",
                7 : "v7",
                8 : "v8"
            },
            p(".vip-icon")[0] ? p(".vip-icon")[0].className.match(/\d/) && a[p(".vip-icon")[0].className.match(/\d/)[0]] && (b = a[p(".vip-icon")[0].className.match(/\d/)[0]]) : b = "",
            b
        },
        ipLocalCity: function() {
            return "undefined" != typeof localStorage && localStorage ? localStorage && !this.isHttps() ? localStorage.getItem("TK-city") || "" === localStorage.getItem("TK-city") ? localStorage.getItem("TK-city") : (p.getJSON("//showkc.taotaosou.com/convert.do?guid=" + l + "&callback=?&p=http",
            function(a) {
                return a ? (localStorage.setItem("TK-city", a.content.address_detail.city), a.content.address_detail.city) : ""
            }), "") : localStorage && this.isHttps() ? localStorage.getItem("TK-city") || "" === localStorage.getItem("TK-city") ? localStorage.getItem("TK-city") : (p.getJSON("//showkc.taotaosou.com/convert.do?guid=" + l + "&callback=?",
            function(a) {
                return a ? (localStorage.setItem("TK-city", a.content.address_detail.city), a.content.address_detail.city) : !1
            }), "") : "": ""
        },
        getContainer: function() {
            var a = "",
            b = p("#J_PromoPrice"),
            c = p("#J_StrPriceModBox"),
            d = c[0] && b.hasClass("tb-hidden");
            return q.isTBDetail || q.isTMDetail ? q.isTMDetail && p(".tm-fcs-panel")[0] ? a = p(".tm-fcs-panel") : q.isTBDetail && p(".tb-meta")[0] ? a = p(".tb-meta") : d ? a = p("#J_StrPriceModBox") : !b[0] && p("#J_StrPriceModBox")[0] ? a = p("#J_StrPriceModBox") : b[0] && (a = b) : q.isB2CDetail ? a = document.getElementById("summary-price") ? p("#summary-price") : p(".shop_intro_a")[0] ? p(".shop_intro_a")[0] : p("#price") : q.isYHDDetail ? a = p(".mod_detailInfo_priceSales") : q.isVjiaDetial ? a = p("#MarketPrice").parent() : q.isDDDetail ? a = p("#originalPriceTag")[0] ? p("#originalPriceTag").parents(".m_t4") : p("#d_price")[0] ? p("#d_price").parent() : p(".sale")[0] ? p(".sale")[0] : p("#stock_html") : q.isSuningDetail ? a = p(p("#allcuxiao")[0] ? "#allcuxiao": "#netPriceBox") : q.isVanclDetail ? a = p(document.getElementById("pricearea") ? "#pricearea": ".MSpriceArea") : q.isAMXDetail ? document.getElementById("price_feature_div") ? a = p("#price_feature_div") : document.getElementById("tmmSwatches") && (a = p("#tmmSwatches")) : q.isMLSDetail ? a = p(".item-price-info")[0] ? p(".item-price-info") : p(".sku_meta .price").last().parent() : q.isMGJDetail ? a = p(".goods-im") : q.isVipDetail ? a = p(p(".pi-price-box")[0] ? ".pi-price-box": ".pi_price_box") : q.isGMDetail ? p(".prdprice")[0] && (a = p(".prdprice")) : q.isPaipaiDetail ? p(".comm_info")[0] && (a = p(".comm_info")[0]) : q.isJuDetail ? p(".status-banner")[0] && (a = p(".status-banner")) : q.isYixunDetail ? p(".xprice")[0] && (a = p(".xprice")[0]) : q.isLeFengDeatil ? p(".detail-nav")[0] && (a = p(".detail-nav")) : location.href.match(/kaola\.com\/product/) ? p(".m-price")[0] && (a = p(".m-price")[0]) : q.isBeiBeiDetail ? "you.beibei.com" === location.host ? p(".view-SkuPriceInfo")[0] && (a = p(".view-SkuPriceInfo")[0]) : "global.beibei.com" === location.host ? p(".over-price")[0] && (a = p(".over-price")[0]) : p(".price-info")[0] && (a = p(".price-info")[0]) : q.isFengQuDetail ? p(".goods-activityinfos")[0] && (a = p(".goods-activityinfos")[0]) : q.isMiaDetail ? p(".pi_price_box")[0] && (a = p(".pi_price_box")[0]) : q.isStrawberrynetDetail ? p(".prod-Option")[0] && (a = p(".prod-Option")[0]) : q.isYmatouDetail ? p(".tariff")[0] && (a = p(".tariff")[0]) : q.isJumeiDetail && (p(".parent_full_cut")[0] ? a = p(".parent_full_cut")[0] : p(".pop_price")[0] ? a = p(".pop_price")[0] : p(".price_module")[0] ? a = p(".price_module")[0] : p(".mall_price")[0] && (a = p(".mall_price")[0])),
            a
        },
        isHttps: function() {
            var a = location.protocol;
            return "https:" === a ? !0 : !1
        },
        getCookie: function() {
            var a, b, c, d, e, f = {},
            g = document.cookie;
            if ("" === g) return f;
            for (a = g.split("; "), b = 0, c = a.length; c > b; b++) {
                d = a[b],
                e = d.indexOf("=");
                var h;
                try {
                    h = decodeURIComponent(d.substring(e + 1))
                } catch(i) {
                    h = d.substring(e + 1)
                }
                f[d.substring(0, e)] = h
            }
            return f
        },
        isJuzi: function() {
            return this.DITCH_ID.match(/B611040020150619/)
        },
        userNick: function() {
            return document.cookie.replace(/.*tracknick=/, "").replace(/;.*/, "")
        },
        cookie17: function() {
            return this.getCookie().cookie17
        }
    },
    c.exports = h
}),
__tk__define("utils/env", ["../utils", "../lib/jquery", "../host"],
function(a, b, c) {
    a("../utils");
    c.exports = {
        juxiao: function() {
            return "https://www.gmf.com"
        }
    }
}),
__tk__define("utils/tts_stat", ["../lib/jquery", "../lib/underscore", "../host", "../utils"],
function(a, b, c) {
    var d, e = a("../lib/jquery"),
    f = a("../lib/underscore"),
    g = a("../host"),
    h = a("../utils"),
    i = {};
    return d = h.site(),
    i.init = function() {
        i._init || (i._init = !0, e("body").on("click", "[data-tts-log]",
        function(a) {
            var b = e(a.target).closest("[data-tts-log]"),
            c = b.data("tts-log");
            f.each(c.split(","),
            function(b) {
                i.trackEvent(b),
                i.trackLog(b),
                a.stopPropagation()
            })
        }))
    },
    i._init = !1,
    i.trackEvent = function(a) {
        e.getScript("//log.taotaosou.com/browser_statistics.do?type=" + d + "_" + a)
    },
    i.trackLog = function(a) {
        e.getScript("//dclog.taotaosou.com/statistics.do?systemName=ttk_bottomtab&type=" + a + "&website=" + g.webSite + "&host=" + d + "&guid=" + h.GUID + "&ditch=" + h.DITCH_ID)
    },
    i
}),
__tk__define("views/Box.extend", ["../lib/jquery", "./prefix", "../templates"],
function(a, b, c) {
    function d() {}
    function e() {}
    function f(a, b) {
        function c(b) {
            d(),
            "prev" === b && j - 1 >= 0 ? (j--, l -= k.eq(j).outerHeight(!0)) : "next" === b && j <= k.length - 2 && (j++, l += k.eq(j).outerHeight(!0)),
            a.animate({
                marginTop: "-" + l
            },
            500)
        }
        function d() {
            m && clearInterval(m)
        }
        function e() {
            c("prev")
        }
        function f() {
            c("next")
        }
        var g, j = 0,
        k = a.find("." + i.app + "comment-item"),
        l = k.eq(j).outerHeight(!0),
        m = null;
        return g = h.proxy(function() {
            a.height() > b && (m = setInterval(function() {
                j >= k.length - 2 && d(),
                a.animate({
                    marginTop: "-" + l
                },
                500,
                function() {
                    j++,
                    l += k.eq(j).outerHeight(!0)
                })
            },
            3e3))
        },
        this),
        {
            auto: g,
            stop: d,
            prev: e,
            next: f
        }
    }
    function g() {}
    var h = a("../lib/jquery"),
    i = a("./prefix");
    a("../templates");
    d.prototype = {
        init: function(a) {
            this.remove(),
            a.append('<div id="' + i.app + 'BOX"></div>'),
            h("#" + i.app + "BOX").hide()
        },
        getBox: function() {
            return h("#" + i.app + "BOX")
        },
        render: function(a) {
            this.getBox().html(a)
        },
        show: function() {},
        remove: function() {
            this.getBox().remove()
        }
    },
    h.extend(e.prototype, d.prototype),
    e.remove = function() {
        this.prototype.remove()
    },
    e.prototype.render = function(a, b) {
        var c, d = '<div class="${app}mangnifier"> <div class="${app}mangnifier-media"> <a href="${url}" target="_blank" data-stat="${stat}" class="${app}detail"><img src="${img}"></a> </div> <a href="${url}" target="_blank" data-stat="${stat}" class="${app}detail">${title}</a>{{if level}}  <div id="${app}shop" class="${app}clear"><img src="${level}" alt="信用等级" id="${app}level"> <div id="${app}comment">{{if isCom}}{{if com}}评价：${com}{{/if}}{{else}}{{if com}}<a href="${href}" data-stat="${stat}" class="J_comlink" target="_blank">评价：${com}</a>{{/if}}{{/if}}</div>{{/if}}';
        c = "true" === a.iscom ? h.extend(a, {
            app: i.app,
            href: a.url + "&on_comment=1",
            stat: a.target.find("." + i.app + "detail").attr("data-stat"),
            isCom: !0
        }) : h.extend(a, {
            app: i.app,
            href: a.url + "&on_comment=1",
            stat: a.target.find("." + i.app + "detail").attr("data-stat")
        }),
        b ? this.init(b) : this.init(a.target),
        this.getBox().append(h.tmpl(d, c)).fadeIn()
    },
    h.extend(g.prototype, d.prototype),
    g.fn = g.prototype,
    h.extend(g.fn, {
        renderComment: function(a, b) {
            var c = '<div class="${app}comment-item"> <div class="${app}comment-name">${commentator}</div> <div class="${app}comment-content">${content}</div> </div>';
            h.tmpl(c, a).appendTo(b)
        },
        render: function(a, b, c) {
            var d, e = '<div id="${app}Box-comment"> <div id="${app}comment-hd">买家最新评论</div> <div id="${app}comment-bd"> <div id="${app}comment-list"> </div> </div> <div id="${app}comment-ft"> <div id="${app}comment-btn-prev"></div> <div id="${app}comment-btn-next"></div> </div> </div>',
            g = this;
            c ? this.init(c) : this.init(a),
            this.getBox().append(h.tmpl(e, {
                app: i.app
            })).fadeIn(),
            d = h("#" + i.app + "comment-list"),
            h.each(b,
            function(a, b) {
                b.app = i.app,
                g.renderComment(b, d)
            }),
            this.scroll = f(d, this.getBox().height())
        },
        renderFail: function(a) {
            var b = '<div class="${app}comment-fail" id="${app}Box-comment"> </div>';
            a && this.init(a),
            this.getBox().html(h.tmpl(b, {
                app: i.app
            })).fadeIn()
        },
        scroll: {
            auto: function() {},
            stop: function() {},
            prev: function() {},
            next: function() {}
        },
        remove: function() {
            this.scroll.stop(),
            this.getBox().remove()
        }
    }),
    g.remove = function() {
        this.fn.remove()
    },
    c.exports = {
        Magnifier: e,
        Comment: g
    }
}),
__tk__define("views/Box", ["../lib/jquery", "./prefix", "../templates"],
function(a, b, c) {
    function d() {}
    function e() {}
    function f(a, b) {
        function c(b) {
            d(),
            "prev" === b && j - 1 >= 0 ? (j--, l -= k.eq(j).outerHeight(!0)) : "next" === b && j <= k.length - 2 && (j++, l += k.eq(j).outerHeight(!0)),
            a.animate({
                marginTop: "-" + l
            },
            500)
        }
        function d() {
            m && clearInterval(m)
        }
        function e() {
            c("prev")
        }
        function f() {
            c("next")
        }
        var g, j = 0,
        k = a.find("." + i.app + "comment-item"),
        l = k.eq(j).outerHeight(!0),
        m = null;
        return g = h.proxy(function() {
            a.height() > b && (m = setInterval(function() {
                j >= k.length - 2 && d(),
                a.animate({
                    marginTop: "-" + l
                },
                500,
                function() {
                    j++,
                    l += k.eq(j).outerHeight(!0)
                })
            },
            3e3))
        },
        this),
        {
            auto: g,
            stop: d,
            prev: e,
            next: f
        }
    }
    function g() {}
    var h = a("../lib/jquery"),
    i = a("./prefix"),
    j = a("../templates");
    d.prototype = {
        init: function(a) {
            this.remove(),
            a.append('<div id="' + i.app + 'BOX"></div>'),
            h("#" + i.app + "BOX").hide()
        },
        getBox: function() {
            return h("#" + i.app + "BOX")
        },
        render: function(a) {
            this.getBox().html(a)
        },
        show: function() {},
        remove: function() {
            this.getBox().remove()
        }
    },
    h.extend(e.prototype, d.prototype),
    e.remove = function() {
        this.prototype.remove()
    },
    e.prototype.render = function(a, b, c, d, e) {
        var f = j["tbtm.detail.magnifier"],
        g = {
            app: i.app,
            img: b,
            title: c,
            url: d,
            stat: a.find("." + i.app + "detail").attr("data-stat")
        };
        e ? this.init(e) : this.init(a),
        this.getBox().append(h.tmpl(f, g)).fadeIn()
    },
    h.extend(g.prototype, d.prototype),
    g.fn = g.prototype,
    h.extend(g.fn, {
        renderComment: function(a, b) {
            var c = '<div class="${app}comment-item"> <div class="${app}comment-name">${commentator}</div> <div class="${app}comment-content">${content}</div> </div>';
            h.tmpl(c, a).appendTo(b)
        },
        render: function(a, b, c) {
            var d, e = '<div id="${app}Box-comment"> <div id="${app}comment-hd">买家最新评论</div> <div id="${app}comment-bd"> <div id="${app}comment-list"> </div> </div> <div id="${app}comment-ft"> <div id="${app}comment-btn-prev"></div> <div id="${app}comment-btn-next"></div> </div> </div>',
            g = this;
            c ? this.init(c) : this.init(a),
            this.getBox().append(h.tmpl(e, {
                app: i.app
            })).fadeIn(),
            d = h("#" + i.app + "comment-list"),
            h.each(b,
            function(a, b) {
                b.app = i.app,
                g.renderComment(b, d)
            }),
            this.scroll = f(d, this.getBox().height())
        },
        renderFail: function(a) {
            var b = '<div class="${app}comment-fail" id="${app}Box-comment"> </div>';
            a && this.init(a),
            this.getBox().html(h.tmpl(b, {
                app: i.app
            })).fadeIn()
        },
        scroll: {
            auto: function() {},
            stop: function() {},
            prev: function() {},
            next: function() {}
        },
        remove: function() {
            this.scroll.stop(),
            this.getBox().remove()
        }
    }),
    g.remove = function() {
        this.fn.remove()
    },
    c.exports = {
        Magnifier: e,
        Comment: g
    }
}),
__tk__define("views/alimama", [],
function(a, b, c) {
    function d() {
        return '<iframe src="//show.kc.taotaosou.com/jsad.do?type=1" id="ali-ditong" frameborder="none" width="329" height="74" scrolling="no"></iframe>'
    }
    function e() {
        return '<iframe src="//show.kc.taotaosou.com/jsad.do?type=2" id="ali-lds" frameborder="none" width="112" height="412" scrolling="no"></iframe>'
    }
    function f() {
        return '<iframe src="//showkc.taotaosou.com/jsad.do?type=4" id="ali-lds" frameborder="none" width="112" height="412" scrolling="no" style="margin-left: 16px;"></iframe>'
    }
    function g() {
        return '<iframe src="//showkc.taotaosou.com/jsad.do?type=5" id="ali-ditong" frameborder="none" width="669" height="74" scrolling="no"></iframe>'
    }
    c.exports = {
        ditong: d(),
        lds: e(),
        tbDitong: g(),
        tdLds: f()
    }
}),
__tk__define("views/app.chain", ["../lib/jquery", "../utils", "../host"],
function(a, b, c) {
    function d(a) {
        var b = '<div class="' + h + '" style="text-align: right; padding-right: 10px; line-height: 23px; border: 1px solid #EFEFEF; border-top: none; width: 398px; _width: 408px;" class="TK-app-word"><a style="color: blue; text-decoration: underline;" href="' + a.pinpai[0].href + '" target="_blank">' + a.pinpai[0].title + "</a></div>";
        setTimeout(function() {
            f(b).insertAfter("#TK-con")
        },
        800)
    }
    function e() {
        f.getJSON("//www.gmf.com/tumeiti-bottom.php?adType=0,0,1,0&keyword=0,0,0,0&adSize=0,0,100*237,0&itemSize=0,0,1,0&tbId=&pid=347&jsonp=?",
        function(a) {
            if (!a || !a.pinpai[0]) return ! 1;
            var b = null;
            b = setInterval(function() {
                document.getElementById("TK-con") && (d(a), clearInterval(b), b = null)
            },
            200)
        })
    }
    var f = a("../lib/jquery"),
    g = (a("../utils"), a("../host")),
    h = "";
    h += g.isTMDetail ? "TK-app-word": g.isTBDetail ? "TK-app-": "TK-app-btc",
    c.exports = {
        init: e
    }
}),
__tk__define("views/bijia/list", ["../../lib/jquery", "../../lib/underscore", "../../utils", "../../host", "../../templates.jst", "../../utils/tts_stat", "../../models/ditong", "../../models/api", "../../product", "../../utils/env", "../../models/models", "../../models/taobao", "../../models/jsonp", "../prefix", "../../models/b2c", "../../models/remind", "../../models/lds", "../../models/juxiao", "../../models/tuan", "../../configureView", "../../configureModel", "../../lib/jquery.popunder", "../../mustache_helpers", "../../lib/handlebars"],
function(a, b, c) {
    function d() {
        return g.isJuzi() ? i["juzi/home.list"] : i["bijia/home.list"]
    }
    var e = a("../../lib/jquery"),
    f = a("../../lib/underscore"),
    g = a("../../utils"),
    h = a("../../host"),
    i = a("../../templates.jst"),
    j = a("../../utils/tts_stat"),
    k = a("../../models/ditong"),
    l = a("../../models/models"),
    m = a("../../configureView");
    a("../../lib/jquery.popunder"),
    a("../../mustache_helpers");
    var n = e("body");
    c.exports = {
        init: function() {
            j.init(),
            j.trackEvent("Bottomtab_PV"),
            this.attachModelEvent(),
            this.attachViewEvent(),
            h.isHomeJD || h.isHomeTmall || h.isHomeTaobao || h.isHomeMGJ || h.isHomeMLS || h.isHomeVIP ? this.laiyuan = "Rerecom": this.laiyuan = "tsearch",
            l.reCom()
        },
        $el: null,
        template: d(),
        viewDeferred: new e.Deferred,
        remindViewDeferred: new e.Deferred,
        qutuViewDeferred: new e.Deferred,
        attachModelEvent: function() {
            var a = this;
            e("body").on({
                "tk.recom.success": function(b, c) {
                    a.initModel(c),
                    h.isHomeTaobao || h.isHomeTmall || h.isHomeJD || h.isHomeMGJ || h.isHomeMLS || h.isHomeVIP || h.isHomeSuning || h.isYHDHome || h.isHomeJiuxian || h.isHomeJumei || h.isHomeDD || h.isHomeAMX || h.isHomeZhe800 || h.isHomeNuomi || h.isHomePaipai || h.isHomeMeituan ? a.bottom_log(1) : a.bottom_log(2)
                },
                "tk.recom.promoprice": function(b, c) {
                    a.updateModel(c)
                },
                "tts.bijia.like.render": function(b, c) {
                    a.renderView(c)
                },
                "tts.bijia.like.update": function(b, c) {
                    a.renderSameView(c, !0)
                },
                "ditong.sync.success": function(b, c) {
                    a.ditongRender(c)
                },
                "config.get.success": function(b, c) {
                    a.renderBanner(c)
                }
            })
        },
        getBanner: function() {},
        renderBanner: function(a) {
            k.init()
        },
        ditongRender: function(a) {
            var b = i["bijia/taobao.ditong"];
            this.$el.find(".TTS-banner-wrap").empty().append(b(a)),
            e(".dtAds img").on("load",
            function() {
                e(window).trigger("resize"),
                e(".TTS-products-wrap").show()
            }),
            1 === e(".TK_configure_bottom .TK_close_wrap").data("val") ? e(".TTS-banner-wrap").hide() : e(".TTS-banner-wrap").show(),
            e(".dtAds").on("click",
            function() {
                window.aPopunder = [[a.href]],
                e.popunder.helper.def.fs = !1,
                e.popunder()
            })
        },
        attachViewEvent: function() {
            var a = this;
            g.isJuzi() ? e("body").on("click", ".TTS-bijia-min-btn",
            function() {
                e(this).hasClass("juzi-fold") ? j.trackEvent("Bottomtab_shorten_click") : j.trackEvent("Bottomtab_stretch_click"),
                e(this).toggleClass("juzi-fold juzi-unfold"),
                a.$el.toggleClass("juzi-min", e(this).hasClass("juzi-unfold")),
                a.$el.find(".TTS_logo_bijia").toggleClass("juzi-unlogo", e(this).hasClass("juzi-unfold"))
            }) : (n.on("click", ".TTS-bijia-min-btn",
            function() {
                e("#TTS_bijia_wrap").css("background", "none"),
                e(this).hasClass("bijia-btn") ? j.trackEvent("Bottomtab_shorten_click") : j.trackEvent("Bottomtab_stretch_click"),
                e(this).toggleClass("bijia-btn"),
                a.$el.toggleClass("bijia-min"),
                a.$el.find(".TTS_logo_bijia").toggleClass("bijia-TTS_ditong_off"),
                a.$el.find(".TTS_logo_bijia").removeClass("TTS-bijia-logo-bg"),
                a.$el.find(".TTS_logo_bijia").toggleClass("bijia-TTS_ditong_on")
            }), n.on("click", ".bijia-min",
            function() {
                e("#TTS_bijia_wrap").css("background", "#fff"),
                e(this).toggleClass("bijia-min"),
                e(this).find(".TTS-bijia-min-btn").toggleClass("bijia-btn"),
                e(this).find(".TTS_logo_bijia").toggleClass("bijia-TTS_ditong_off"),
                e(this).find(".TTS_logo_bijia").addClass("TTS-bijia-logo-bg"),
                e(this).find(".TTS_logo_bijia").toggleClass("bijia-TTS_ditong_on")
            }), n.on("mouseover", ".bijia-TTS_ditong_on",
            function() {
                e(".TK_configure-wrap").hasClass("TK_hide") || e(".TK_configure-wrap").addClass("TK_hide"),
                e(this).removeClass("TTS-bijia-logo-bg"),
                e(this).find(".TTS-mune").show()
            }), n.on("mouseout", ".bijia-TTS_ditong_on",
            function() {
                e(this).addClass("TTS-bijia-logo-bg"),
                e(this).find(".TTS-mune").hide()
            }), e(window).on("resize",
            function() {
                var a = 250,
                b = e(window).width() - e(".TTS-banner-wrap").width() - e("#ali-ditong").width() - a;
                85 > b ? e("ul.TTS-left").hide() : e("ul.TTS-left").show();
                var c = b - b % 85;
                e("ul.TTS-left").css("maxWidth", c)
            })),
            e("body").on("mouseenter", ".TTS-list-left-wrap li",
            function() {
                var b, c, d = i["bijia/home.list.pop"];
                a.model.proList.length && (b = a.model.proList, c = b[e(this).index()], c.isProList = a.laiyuan, j.trackEvent("Bottomtab_" + a.laiyuan + "_magnify_PV"), j.trackLog("Bottomtab_" + a.laiyuan + "_magnify_PV")),
                a.focusProduct(e(this)),
                a.showPopDialog(e(this), d, c)
            }).on("mouseleave", ".TTS-list-left-wrap li",
            function() {
                a.blurProduct(e(this)),
                a.hidePopDialog(e(this))
            })
        },
        initModel: function(a) {
            this.model = a,
            e("body").trigger("tts.bijia.like.render", [this.model])
        },
        updateModel: function(a) {
            this.model = a,
            e("body").trigger("tts.bijia.like.update", [this.model])
        },
        renderView: function(a) {
            this.$el = e(this.template(a)).appendTo("body"),
            e(".TTS-logo-a").on("click",
            function() {
                g.statLog_yx({
                    source: "bottom"
                })
            }),
            e(".TTS_yijianUrl").on("click",
            function() {
                g.statLog_yx({
                    source: "menu"
                })
            }),
            e(".TTS-products-wrap").hide(),
            this.renderSameView(a),
            this.emuResponsive(a)
        },
        renderSameView: function(a, b) {
            var c, d = this,
            f = function() {
                return g.isJuzi() ? i["juzi/home.list.item"] : i["bijia/home.list.item"]
            } ();
            a.proList.length && (a.proList.length && (b || (j.trackEvent("Bottomtab_" + d.laiyuan + "_PV"), j.trackLog("Bottomtab_" + d.laiyuan + "_PV")), c = {
                list: a.proList,
                isProList: d.laiyuan,
                laiyuan: d.laiyuan
            }), this.$el.find(".TTS-list-left").empty().append(f(c)), this.render()),
            this.$el.find(".TTS-list-lowestPrice").length && (b && (j.trackEvent("Bottomtab_lowesttag_PV"), j.trackLog("Bottomtab_lowesttag_PV")), setTimeout(function() {
                var a = d.$el.find(".TTS-list-lowestPrice");
                a.trigger("mouseenter"),
                setTimeout(function() {
                    a.trigger("mouseleave")
                },
                4e3)
            },
            0)),
            e(".TTS-list-left-head").on("click", ".TTS-list-product-img",
            function() {
                e(this).attr("href").match(/\/\/show-3\.mediav\.com\//) && (g.statLog_one({
                    systemName: "ttk_flow",
                    cType: 3,
                    ref: location.host,
                    url: encodeURIComponent(e(this).attr("href"))
                }), g.statLog_one({
                    systemName: "ttk_recommend_clikc_log",
                    sType: 3,
                    sPid: "",
                    cType: 4,
                    sPric: "",
                    sProPric: "",
                    cid: "",
                    pid: "",
                    price: "",
                    cNum: 1,
                    ptype: h.pageType
                }))
            }),
            e(".TTS-list-left-head").on("click", ".TTS-product-img a",
            function() {
                e(this).attr("href").match(/\/\/show-3\.mediav\.com\//) && g.statLog_one({
                    systemName: "ttk_flow",
                    cType: 3,
                    ref: location.host,
                    url: encodeURIComponent(e(this).attr("href"))
                }),
                g.statLog_one({
                    systemName: "ttk_recommend_clikc_log",
                    sType: 3,
                    sPid: "",
                    cType: 4,
                    sPric: "",
                    sProPric: "",
                    cid: "",
                    pid: "",
                    price: "",
                    cNum: 1,
                    ptype: h.pageType
                })
            })
        },
        render: function() {
            setTimeout(function() {
                e(window).trigger("resize"),
                e(".TTS-products-wrap").show()
            },
            5e3),
            m.init()
        },
        bottom_log: function(a) {
            g.kLog({
                systemName: "bottom-show",
                pos: a,
                url: location.href,
                ref: encodeURIComponent(document.referrer)
            });
            var b;
            e(".TTS-list-left-wrap li").on("click",
            function() {
                b = e(this).find("a").attr("href").match(/showkc/) ? 1 : e(this).find("a").attr("href").match(/show\-3/) ? 2 : e(this).find("a").attr("href").match(/website\=(taobao|tmall)/) ? 3 : 4,
                g.kLog({
                    systemName: "bottom-click",
                    pos: a,
                    type: b,
                    ref: encodeURIComponent(document.referrer)
                })
            })
        },
        emuResponsive: function() {
            var a = [589, 934, 1366, 1920, 999999];
            a = f.map(a,
            function(a) {
                return a - 80
            }),
            a = f.zip(f.initial(a), f.rest(a)),
            e(window).on("resize.tts",
            function() {
                var b = e(window).width(),
                c = ["tts-res-l1", "tts-res-l2", "tts-res-l3", "tts-res-l4"];
                e("body").removeClass(c.join(" ")),
                f.some(a,
                function(a, d) {
                    return b >= a[0] && b < a[1] ? (e("body").addClass(c[d]), !0) : void 0
                })
            }).trigger("resize.tts")
        },
        showPopDialog: function(a, b, c) {
            a.find(".TTS-bijia-pop").length ? a.find(".TTS-bijia-pop").show() : (this.$el.find(".TTS-bijia-pop").remove(), a.append(b(c)))
        },
        hidePopDialog: function(a) {
            a.find(".TTS-bijia-pop").hide()
        },
        focusProduct: function(a) {
            a.find(".TTS-list-product-detail").addClass("highlight")
        },
        blurProduct: function(a) {
            a.find(".TTS-list-product-detail").removeClass("highlight")
        }
    }
}),
__tk__define("views/bijia/main", ["./taobao", "../../lib/jquery", "../../lib/underscore", "../../utils", "../../host", "../../templates.jst", "../../utils/tts_stat", "../../models/models", "../../models/taobao", "../../models/jsonp", "../prefix", "../../models/api", "../../product", "../../utils/env", "../../models/b2c", "../../models/remind", "../../models/lds", "../../models/juxiao", "../../models/tuan", "../../configureView", "../../configureModel", "../../mustache_helpers", "../../lib/handlebars", "./taobao.remind", "../remind/main", "../remind/qutu", "../remind/under", "./list", "../../models/ditong", "../../lib/jquery.popunder"],
function(a, b, c) {
    c.exports = {
        detail: function() {
            a("./taobao").init()
        },
        list: function() {
            a("./list").init()
        }
    }
}),
__tk__define("views/bijia/taobao.cps", ["../../lib/jquery", "../../lib/underscore", "../../mustache_helpers", "../../lib/handlebars", "../../utils", "../../host", "../../templates.jst", "../../utils/tts_stat", "./taobao", "../../models/models", "../../models/taobao", "../../models/jsonp", "../prefix", "../../models/api", "../../product", "../../utils/env", "../../models/b2c", "../../models/remind", "../../models/lds", "../../models/juxiao", "../../models/tuan", "../../configureView", "../../configureModel", "./taobao.remind", "../remind/main", "../remind/qutu", "../remind/under"],
function(a, b, c) {
    var d = a("../../lib/jquery"),
    e = (a("../../lib/underscore"), a("../../mustache_helpers"), a("../../utils"), a("../../templates.jst")),
    f = a("../../utils/tts_stat"),
    g = a("./taobao");
    c.exports = {
        init: function() {
            this.attachModelEvent(),
            this.attachViewEvent()
        },
        $el: null,
        template: e["bijia/taobao.cps"],
        modelDeferred: new d.Deferred,
        attachModelEvent: function() {
            var a = this;
            d("body").on({
                "cps.sync.success": function(b, c) {
                    a.modelDeferred.resolve(c)
                },
                "tts.bijia.cps.render": function(b, c) {
                    a.renderView(c)
                }
            }),
            d.when(this.modelDeferred.promise(), g.viewDeferred.promise()).then(function(b) {
                a.initModel(b)
            })
        },
        attachViewEvent: function() {
            var a = this;
            d("body").on("mouseenter", ".TTS-list-right-wrap li",
            function() {
                var b = a.model[d(this).index()],
                c = e["bijia/taobao.cps.pop"];
                f.trackEvent("Bottomtab_allsee_magnify_PV"),
                g.focusProduct(d(this)),
                g.showPopDialog(d(this), c, b)
            }).on("mouseleave", ".TTS-list-right-wrap li",
            function() {
                g.blurProduct(d(this)),
                g.hidePopDialog(d(this))
            })
        },
        initModel: function(a) {
            this.model = a,
            d("body").trigger("tts.bijia.cps.render", [this.model])
        },
        renderView: function(a) {
            a.length && (g.$el.find(".TTS-list-right").append(this.template({
                list: a
            })), f.trackEvent("Bottomtab_allsee_PV")),
            g.model.isShowRemind || g.model.isShowQutu || g.model.sameList.length || g.model.similarList.length || (a.length ? (g.$el.find(".TTS-list-right-wrap").addClass("TTS-list-right-left"), d("body").attr("id", "tts-res-disable")) : g.$el.find(".TTS-bijia-min-btn").trigger("click"))
        }
    }
}),
__tk__define("views/bijia/taobao.groupbuy", ["../../lib/jquery", "../../utils", "../../host", "../../lib/underscore", "../../lib/jquery.countdown", "../../templates.jst", "../../utils/tts_stat"],
function(a, b, c) {
    var d = a("../../lib/jquery"),
    e = a("../../utils"),
    f = (a("../../lib/underscore"), a("../../lib/jquery.countdown"), a("../../templates.jst")),
    g = a("../../utils/tts_stat");
    c.exports = {
        init: function() {
            this.serTime,
            this.endTime,
            this.nowHour,
            this.ifLimit,
            this.onTurn = 1,
            this.firstShow = 0,
            this.data,
            this.getserTime()
        },
        switchModule: function() {
            d("#KKT-tuangou-close").on("click",
            function() {
                d("#KKT-tuangou-frame").animate({
                    opacity: 0
                },
                500,
                function() {
                    d("#KKT-tuangou-frame").css("display", "none"),
                    d("#KKT-nomore").css("display", "block").animate({
                        top: "-25px",
                        opacity: "1"
                    },
                    400)
                })
            });
            var a = d("#KKT-open-tuangou"),
            b = d("#KKT-tuangou-frame"),
            c = null,
            e = !1;
            a.on("mouseenter",
            function() {
                clearTimeout(c),
                e || (g.trackEvent("Bottomtab_seckill_menu_pv"), g.trackEvent("Bottomtab_seckill_P_pv")),
                d("#KKT-nomore").css({
                    top: "0px",
                    opacity: "0",
                    display: "none"
                }),
                b.css({
                    display: "block",
                    opacity: "1"
                }),
                c = null,
                e = !0
            }),
            a.on("mouseleave",
            function() {
                c = setTimeout(function() {
                    b.css("display", "none"),
                    d("#KKT-nomore").css("display", "block").animate({
                        top: "-25px",
                        opacity: "1"
                    },
                    500),
                    e = !1,
                    c = null
                },
                300)
            }),
            b.on({
                mouseover: function() {
                    clearTimeout(c),
                    b.css({
                        display: "block",
                        opacity: "1"
                    })
                },
                mouseout: function() {
                    c = setTimeout(function() {
                        b.css("display", "none"),
                        d("#KKT-nomore").css("display", "block").animate({
                            top: "-25px",
                            opacity: "1"
                        },
                        500),
                        e = !1,
                        c = null
                    },
                    300)
                }
            }),
            d("body").on("click", ".TTS-bijia-min-btn",
            function() {
                d(this).hasClass("bijia-fold") ? d("#KKT-nomore").css("display", "block").animate({
                    top: "-25px",
                    opacity: "1"
                },
                500) : (d("#KKT-nomore").css({
                    top: "0px",
                    opacity: "0",
                    display: "none"
                }), d("#KKT-tuangou-frame").css({
                    display: "none",
                    opacity: "0"
                }))
            })
        },
        getserTime: function() {
            var a, b = this;
            d.ajax({
                url: "//seckill.taotaosou.com/getCurrentTime.do?cType=4&format=2",
                cache: !1,
                dataType: "jsonp",
                jsonp: "callback"
            }).done(function(c) {
                b.serTime = c.data,
                a = new Date(c.data);
                var g, h, i = new Date,
                j = a.getFullYear(),
                k = i.getMonth() + 1,
                l = e.format(a.getDate()),
                m = e.format(a.getMinutes()),
                n = e.format(a.getSeconds()),
                o = e.format(a.getHours()),
                p = o;
                if (p >= 10 && 13 >= p) g = 14,
                h = j + "/" + k + "/" + l + " " + g + ":00:00";
                else if (p >= 14 && 20 >= p) g = 21,
                h = j + "/" + k + "/" + l + " " + g + ":00:00";
                else if (p >= 21 && 23 >= p) {
                    var q;
                    q = 60 * (23 - o) * 60 * 1e3 + 60 * (60 - m) * 1e3 + 1e3 * (60 - n),
                    h = q + 36e6 + c.data
                } else p >= 0 && 9 >= p && (g = 10, h = j + "/" + k + "/" + l + " " + g + ":00:00");
                p >= 9 && 11 >= p && (b.ifLimit = 1),
                p >= 13 && 14 >= p && (b.ifLimit = 1),
                p >= 20 && 21 >= p && (b.ifLimit = 1),
                b.nowHour = o,
                b.endTime = h;
                var r = d("#TTS-group"),
                s = f["bijia/taobao.groupbuy"];
                r.append(s),
                b.countDown(),
                b.getJson()
            })
        },
        getJson: function() {
            var a, b = this;
            d.ajax({
                url: "//cmsproxy.taotaosou.com/getSeckillProductPluginList.do?time=" + b.serTime + "&cType=4",
                cache: !1,
                dataType: "jsonp",
                jsonp: "callback"
            }).done(function(c) {
                a = c;
                var e, h, i, j, k, l, m = b.nowHour;
                m >= 10 && 13 >= m ? (e = 0, j = 10, i = 0, k = 14, h = 0, l = 21) : m >= 14 && 20 >= m ? (e = 0, j = 14, i = 0, k = 21, h = 1, l = 10) : m >= 21 && 23 >= m ? (e = 0, j = 21, i = 1, k = 10, h = 1, l = 14) : m >= 0 && 9 >= m && (e = 0, j = 10, i = 0, k = 14, h = 0, l = 21),
                a.day1 = e,
                a.hour1 = j,
                a.day2 = i,
                a.hour2 = k,
                a.day3 = h,
                a.hour3 = l;
                var n = f["bijia/taobao.groupbuy.data"];
                d(n(a)).insertAfter("#KKT-tab"),
                g.trackEvent("Bottomtab_seckill_pv"),
                d("#KKT-tab-li-1").addClass("tabHover"),
                b.ifFirstShow(),
                b.choseStatus(),
                b.turnTabs(),
                b.switchModule(),
                b.showLimit()
            })
        },
        ifFirstShow: function() {
            var a, b = this,
            c = "",
            e = b.nowHour;
            11 === e || 14 === e || 21 === e ? d.ajax({
                url: "//control.taotaosou.com/cookie/read.do?key=KKT",
                cache: !1,
                dataType: "jsonp",
                jsonp: "callback"
            }).done(function(b) {
                if ("null" === b) a = 1,
                c = "&time=3600";
                else if (b >= 1 && 4 >= b) {
                    var e = Number(b);
                    a = e + 1
                }
                4 >= a && a >= 1 ? d.ajax({
                    url: "//control.taotaosou.com/cookie/write.do?key=KKT&value=" + a + c,
                    cache: !1,
                    dataType: "jsonp",
                    jsonp: "callback"
                }).done(function() {
                    d("#KKT-tuangou-frame").css({
                        display: "block",
                        opacity: "1"
                    }),
                    g.trackEvent("Bottomtab_seckill_P_pv"),
                    g.trackEvent("Bottomtab_seckill_menu_pv")
                }) : d("#KKT-nomore").css("display", "block").animate({
                    top: "-25px",
                    opacity: "1"
                },
                500)
            }) : d("#KKT-nomore").css("display", "block").animate({
                top: "-25px",
                opacity: "1"
            },
            500)
        },
        countDown: function(a) {
            var b = this;
            a = d("#KKT-tuangou-countdown"),
            a.countdown("", b.endTime, b.serTime).on("update.countdown",
            function(b) {
                a.html(b.strftime("<span>%d</span>天<span>%H</span>小时<span>%M</span>分<span>%S</span>秒后开始"))
            }).on("upUpdate.countdown",
            function(b) {
                a.html(b.strftime("距离本场结束<span>%H</span>小时<span>%M</span>分<span>%S</span>秒"))
            }).on("upfinish.countdown",
            function(b) {
                a.html(b.strftime("活动结束"))
            })
        },
        turnTabs: function() {
            d("#KKT-tab").on("mouseenter", "#KKT-tab-li-1",
            function() {
                g.trackEvent("Bottomtab_seckill_menu_pv"),
                d(".KKT-tab-li").removeClass("tabHover"),
                d("#KKT-tab-li-1").addClass("tabHover"),
                d(".KKT-content").hide(),
                d("#KKT-content-1").show()
            }),
            d("#KKT-tab").on("mouseenter", "#KKT-tab-li-2",
            function() {
                g.trackEvent("Bottomtab_seckill_menu_pv"),
                d(".KKT-tab-li").removeClass("tabHover"),
                d("#KKT-tab-li-2").addClass("tabHover"),
                d(".KKT-content").hide(),
                d("#KKT-content-2").show()
            }),
            d("#KKT-tab").on("mouseenter", "#KKT-tab-li-3",
            function() {
                g.trackEvent("Bottomtab_seckill_menu_pv"),
                d(".KKT-tab-li").removeClass("tabHover"),
                d("#KKT-tab-li-3").addClass("tabHover"),
                d(".KKT-content").hide(),
                d("#KKT-content-3").show()
            })
        },
        showLimit: function() {
            var a = this;
            a.ifLimit && a.onTurn && a.firstShow && d("#KKT-nomore").show().animate({
                top: "-25px",
                opacity: "1"
            },
            800)
        },
        choseStatus: function() {
            var a = this,
            b = a.nowHour;
            b >= 10 && 13 >= b ? (d("#KKT-tab-li-1").html("今日10点场"), d("#KKT-tab-li-2").html("今日14点场"), d("#KKT-tab-li-3").html("今日21点场"), d("#KKT-tuangou-title").html("10点秒杀开始咯！"), d("#KKT-tuan-time").html("10点")) : b >= 14 && 20 >= b ? (d("#KKT-tab-li-1").html("今日14点场"), d("#KKT-tab-li-2").html("今日21点场"), d("#KKT-tab-li-3").html("明日10点场"), d("#KKT-tuangou-title").html("14点秒杀开始咯！"), d("#KKT-tuan-time").html("14点")) : b >= 21 && 23 >= b ? (d("#KKT-tab-li-1").html("今日21点场"), d("#KKT-tab-li-2").html("明日10点场"), d("#KKT-tab-li-3").html("明日14点场"), d("#KKT-tuangou-title").html("21点秒杀开始咯！"), d("#KKT-tuan-time").html("21点")) : b >= 0 && 9 >= b && (d("#KKT-tab-li-1").html("昨日21点场"), d("#KKT-tab-li-2").html("今日10点场"), d("#KKT-tab-li-3").html("今日14点场"), d("#KKT-tuangou-title").html("10点秒杀马上开始！"), d("#KKT-tuan-time").html("10点"))
        }
    }
}),
__tk__define("views/bijia/taobao", ["../../lib/jquery", "../../lib/underscore", "../../utils", "../../host", "../../templates.jst", "../../utils/tts_stat", "../../models/models", "../../models/taobao", "../../models/jsonp", "../prefix", "../../models/api", "../../product", "../../utils/env", "../../models/b2c", "../../models/remind", "../../models/lds", "../../models/juxiao", "../../models/tuan", "../../configureView", "../../configureModel", "../../mustache_helpers", "../../lib/handlebars", "./taobao.remind", "../remind/main", "../remind/qutu", "../remind/under"],
function(a, b, c) {
    var d = a("../../lib/jquery"),
    e = a("../../lib/underscore"),
    f = a("../../utils"),
    g = a("../../templates.jst"),
    h = a("../../utils/tts_stat"),
    i = a("../../models/models"),
    j = a("../../configureView"),
    k = d("body");
    a("../../mustache_helpers"),
    c.exports = {
        init: function() {
            h.init(),
            h.trackEvent("Bottomtab_PV"),
            this.attachModelEvent(),
            this.attachViewEvent();
            var a = {
                type: "all",
                positionInfo: "detail"
            };
            i.fetch(a)
        },
        $el: null,
        template: g["bijia/taobao"],
        viewDeferred: new d.Deferred,
        remindViewDeferred: new d.Deferred,
        qutuViewDeferred: new d.Deferred,
        attachModelEvent: function() {
            var a = this;
            k.on({
                "tk.sync.success": function(b, c) {
                    a.initModel(c),
                    setTimeout(function() {
                        a.bottom_log(4)
                    },
                    500)
                },
                "tk.sync.promoprice": function(b, c) {
                    a.updateModel(c)
                },
                "tts.bijia.same.render": function(b, c) {
                    a.renderView(c)
                },
                "tts.bijia.same.update": function(b, c) {
                    a.renderSameView(c),
                    setTimeout(function() {
                        a.bottom_log(4)
                    },
                    500)
                }
            })
        },
        attachViewEvent: function() {
            var a = this;
            k.on("click", ".TTS-bijia-min-btn",
            function() {
                d("#TTS_bijia_wrap").css("background", "none"),
                d(this).hasClass("bijia-btn") ? h.trackEvent("Bottomtab_shorten_click") : h.trackEvent("Bottomtab_stretch_click"),
                d(this).toggleClass("bijia-btn"),
                a.$el.toggleClass("bijia-min"),
                a.$el.find(".TTS_logo_bijia").toggleClass("bijia-TTS_ditong_off"),
                a.$el.find(".TTS_logo_bijia").removeClass("TTS-bijia-logo-bg"),
                a.$el.find(".TTS_logo_bijia").toggleClass("bijia-TTS_ditong_on")
            }),
            k.on("click", ".bijia-min",
            function() {
                d("#TTS_bijia_wrap").css("background", "#fff"),
                d(this).toggleClass("bijia-min"),
                d(this).find(".TTS-bijia-min-btn").toggleClass("bijia-btn"),
                d(this).find(".TTS_logo_bijia").toggleClass("bijia-TTS_ditong_off"),
                d(this).find(".TTS_logo_bijia").addClass("TTS-bijia-logo-bg"),
                d(this).find(".TTS_logo_bijia").toggleClass("bijia-TTS_ditong_on")
            }),
            k.on("mouseover", ".bijia-TTS_ditong_on",
            function() {
                d(".TK_configure-wrap").hasClass("TK_hide") || d(".TK_configure-wrap").addClass("TK_hide"),
                d(this).removeClass("TTS-bijia-logo-bg"),
                d(this).find(".TTS-mune").show()
            }),
            k.on("mouseout", ".bijia-TTS_ditong_on",
            function() {
                d(this).addClass("TTS-bijia-logo-bg"),
                d(this).find(".TTS-mune").hide()
            }),
            k.on("click", ".TK-remind-btn",
            function() {
                d(this).hasClass("bijia-remind") ? h.trackEvent("Bottomtab_priceremind_click") : h.trackEvent("Bottomtab_priceremindset_click"),
                h.trackLog("Bottomtab_priceremind_click")
            }),
            k.on("mouseenter", ".TTS-list-left-wrap li",
            function() {
                var b, c, e = g["bijia/taobao.same.pop"];
                a.model.sameList.length ? (b = a.model.sameList, c = b[d(this).index()], c.isSameList = !0, h.trackEvent("Bottomtab_group_magnify_PV"), h.trackLog("Bottomtab_group_magnify_PV")) : (b = a.model.similarList, c = b[d(this).index()], h.trackEvent("Bottomtab_recom_magnify_PV"), h.trackLog("Bottomtab_recom_magnify_PV")),
                a.focusProduct(d(this)),
                a.showPopDialog(d(this), e, c)
            }).on("mouseleave", ".TTS-list-left-wrap li",
            function() {
                a.blurProduct(d(this)),
                a.hidePopDialog(d(this))
            })
        },
        initModel: function(a) {
            this.model = a,
            k.trigger("tts.bijia.same.render", [this.model])
        },
        updateModel: function(a) {
            this.model = a,
            k.trigger("tts.bijia.same.update", [this.model])
        },
        renderView: function(b) {
            var c = f.getConfig();
            Math.floor(100 * Math.random());
            this.$el = d(this.template(b)).appendTo("body"),
            d(".TTS-logo-a").on("click",
            function() {
                f.statLog_yx({
                    source: "bottom"
                })
            }),
            d(".TTS_yijianUrl").on("click",
            function() {
                f.statLog_yx({
                    source: "menu"
                })
            }),
            j.init(),
            this.viewDeferred.resolve();
            try {
                document.createElement("canvas").getContext("2d"),
                a("./taobao.remind").init(),
                a("../remind/main").init(b.ttsid),
                c.taobao.model.remind && (b.isShowRemind = !0, this.remindViewDeferred.resolve(b.ttsid))
            } catch(e) {}
            3 !== b.cateType ? this.renderSameView(b) : b && b.dividedList && b.dividedList[0] ? this.renderBiaoleiView(b) : this.renderSameView(b),
            this.emuResponsive(b);
            var g = '<iframe frameborder="0" marginheight="0" marginwidth="0" border="0" scrolling="no" width="260" height="70" src="//www.gmf.com/brand.php?brandKeyword=&keyword=&brandItemSize=1&keywordType=true&source=382_' + f.DITCH_ID + '&brandRandom=100&adType=2&itemSize=1&height=70&width=260"></iframe>';
            this.$el.find(".TTS-tumeiti").empty().append(g)
        },
        renderBiaoleiView: function(a) {
            var b = g["bijia/taobao.biaolei"];
            this.$el.find(".TTS-list-left").empty().append(b({
                list: a.dividedList
            })),
            this.addBiaoleiEvent()
        },
        addBiaoleiEvent: function() {
            d(".TTS-biaolei-list dd:last-child .TTS-biaolei").css("border", "0px"),
            k.on("mouseover", ".TTS-biaolei-list dd",
            function() {
                d(this).find(".TTS-biaolei-product").show()
            }).on("mouseout", ".TTS-biaolei-list dd",
            function() {
                d(this).find(".TTS-biaolei-product").hide()
            })
        },
        renderSameView: function(a, b) {
            var c, e = this,
            f = g["bijia/taobao.same"]; (a.sameList.length || a.similarList.length) && (a.sameList.length ? (b || h.trackEvent("Bottomtab_group_PV"), d.each(a.sameList,
            function(a, b) {
                b.isMin && k.trigger("tts.bijia.min.product", [b])
            }), c = {
                list: a.sameList,
                isSameList: !0
            }) : a.similarList.length && (b || h.trackEvent("Bottomtab_recom_PV"), c = {
                list: a.similarList
            }), this.$el.find(".TTS-list-left").empty().append(f(c))),
            this.$el.find(".TTS-list-lowestPrice").length && (b && h.trackEvent("Bottomtab_lowesttag_PV"), setTimeout(function() {
                var a = e.$el.find(".TTS-list-lowestPrice");
                a.trigger("mouseenter"),
                setTimeout(function() {
                    a.trigger("mouseleave")
                },
                4e3)
            },
            0))
        },
        bottom_log: function(a) {
            f.kLog({
                systemName: "bottom-show",
                pos: a,
                url: location.href,
                ref: encodeURIComponent(document.referrer)
            });
            var b;
            d(".TTS-list-left-wrap li").on("click",
            function() {
                b = d(this).find("a").attr("href").match(/showkc/) ? 1 : d(this).find("a").attr("href").match(/show\-3/) ? 2 : d(this).find("a").attr("href").match(/website\=(taobao|tmall)/) ? 3 : 4,
                f.kLog({
                    systemName: "bottom-click",
                    pos: a,
                    type: b,
                    ref: encodeURIComponent(document.referrer)
                })
            }),
            d(".TTS-biaolei .TTS-biaolei-one").on("click",
            function() {
                b = d(this).find("a").attr("href").match(/showkc/) ? 1 : d(this).find("a").attr("href").match(/show\-3/) ? 2 : d(this).find("a").attr("href").match(/website\=(taobao|tmall)/) ? 3 : 4,
                f.kLog({
                    systemName: "bottom-click",
                    pos: a,
                    type: b,
                    ref: encodeURIComponent(document.referrer)
                })
            })
        },
        emuResponsive: function(a) {
            var b = [334, 589, 934, 1254, 1553, 999999];
            a.isShowRemind || a.isShowQutu ? a.isShowRemind && a.isShowQutu || (b = e.map(b,
            function(a) {
                return a - 80
            })) : b = e.map(b,
            function(a) {
                return a - 160
            }),
            b = e.zip(e.initial(b), e.rest(b)),
            d(window).on("resize.tts",
            function() {
                var a = d(window).width(),
                c = ["tts-res-l0", "tts-res-l1", "tts-res-l2", "tts-res-l3", "tts-res-l4"];
                k.removeClass(c.join(" ")),
                e.some(b,
                function(b, d) {
                    return a >= b[0] && a < b[1] ? (k.addClass(c[d]), !0) : void 0
                })
            }).trigger("resize.tts")
        },
        showPopDialog: function(a, b, c) {
            a.find(".TTS-bijia-pop").length ? a.find(".TTS-bijia-pop").show() : (this.$el.find(".TTS-bijia-pop").remove(), a.append(b(c)))
        },
        hidePopDialog: function(a) {
            a.find(".TTS-bijia-pop").hide()
        },
        focusProduct: function(a) {
            a.find(".TTS-list-product-detail").addClass("highlight")
        },
        blurProduct: function(a) {
            a.find(".TTS-list-product-detail").removeClass("highlight")
        },
        countdown: function(a) {
            var b = a.data();
            a.countdown(b.start, b.end).on("update.countdown",
            function(b) {
                a.html(b.strftime("<span>%d</span>天<span>%H</span>小时<span>%M</span>分<span>%S</span>秒后开始"))
            }).on("upUpdate.countdown",
            function(b) {
                a.html(b.strftime("仅剩%D天%H小时%M分%S.%c秒"))
            }).on("upfinish.countdown",
            function(b) {
                a.html(b.strftime("活动结束"))
            })
        }
    }
}),
__tk__define("views/bijia/taobao.qutu", ["../../lib/jquery", "../../host", "../../utils", "../../product", "../../templates.jst", "../../utils/tts_stat", "../../lib/underscore", "./taobao", "../../models/models", "../../models/taobao", "../../models/jsonp", "../prefix", "../../models/api", "../../utils/env", "../../models/b2c", "../../models/remind", "../../models/lds", "../../models/juxiao", "../../models/tuan", "../../configureView", "../../configureModel", "../../mustache_helpers", "../../lib/handlebars", "./taobao.remind", "../remind/main", "../remind/qutu", "../remind/under"],
function(a, b, c) {
    function d(a) {
        return 10 > a && (a = "0" + a.toString()),
        a
    }
    function e(a) {
        return Math.max.apply({},
        a)
    }
    function f(a) {
        return Math.min.apply({},
        a)
    }
    function g(a, b) {
        var c = a;
        return a = a.toString(),
        a.match(/\./) || (c = 0 === a ? 0 : b ? a.slice(0, -2) + "." + a.slice( - 2) : a.slice(0, -2)),
        c
    }
    function h(a, b) {
        var c = [];
        "priceHistoryList" in a && (c = a.priceHistoryList),
        this.nPrice = o,
        this.nDay = new Date(a.currentDate).getTime();
        var d = {
            beginXY: 5,
            ySetpPx: 35,
            xSetpPx: 54
        };
        this.color = "#ff3b30";
        var g = !1,
        h = !1;
        c[0] || (this.color = "#ff9500", g = !0, h = !0),
        this.tag = g,
        this.fixs = i.extend({},
        d, b),
        this.warpNum = 6;
        var j = this.getPriceAndDate(c);
        this.price = j.price,
        1 === this.price.length && this.price[0] === this.nPrice && (h = !0),
        this.avg = this.getAvg(this.price),
        this.lengthSecPrice = this.price[this.price.length - 1],
        this.date = j.date,
        "" !== this.nPrice && (this.price.push(this.nPrice), this.date.push(this.nDay)),
        this.max = e(this.price),
        this.min = f(this.price),
        this.ySetp = this.pareSetp(this.min, this.max),
        2 === this.warpNum && (this.yAxisClass = "2", this.fixs.ySetpPx = 105),
        (g || h) && (this.warpNum = 2, this.yAxisClass = "3", this.fixs.ySetpPx = 105),
        this.downYAxi = this.parseDownYAxi(this.min, this.ySetp, h),
        this.yAxis = this.getYaxisData(this.ySetp, this.warpNum),
        this.xAxis = this.getXaerx(),
        this.upYAxi = this.yAxis[0],
        this.matchY = this.fixs.ySetpPx / this.ySetp,
        this.matchX = this.fixs.xSetpPx / 10,
        this.btn = i(".TK-price-btn"),
        this.initBtn(this.btn, g),
        this.drawCanvasBase(this.color, h),
        this.drawCanvasLayout(this.color, h),
        this.drawYaxi(),
        this.drawXaxi()
    }
    var i = a("../../lib/jquery"),
    j = (a("../../host"), a("../../utils"), a("../../product")),
    k = a("../../templates.jst"),
    l = a("../../utils/tts_stat"),
    m = a("./taobao"),
    n = i("body"),
    o = "";
    "" !== j.item.getPrice() && (o = parseInt(j.item.getPrice(), 10)),
    h.prototype = {
        getBtnClass: function(a, b) {
            var c = "bijia-price",
            d = i(".J-TK-mind-icon-text");
            b ? (c = "bijia-price", d.text("价格曲线")) : this.nPrice > this.avg ? (c = "bijia-price-up", d.text("涨价啦!")) : this.nPrice < this.avg ? (this.color = "#63d089", c = "bijia-price-down", d.text("降价啦!")) : this.nPrice === this.avg && (this.lengthSecPrice > this.nPrice ? (this.color = "#63d089", c = "bijia-price-down", d.text("降价啦!")) : this.lengthSecPrice < this.nPrice ? (c = "bijia-price-up", d.text("涨价啦!")) : (c = "bijia-price-horizon", d.text("价格很平稳"))),
            a.removeClass("bijia-price bijia-price-up bijia-price-down bijia-price-horizon"),
            a.addClass(c)
        },
        initBtn: function(a, b) {
            var c = null,
            d = !1;
            this.msgBox = i(".TK-qutu-msg");
            var e = i(".TK-qutu-warp");
            a.on("mouseenter",
            function() {
                clearTimeout(c),
                e.addClass("TK-qutu-wrap-hover"),
                c = null,
                d = !0
            }),
            a.on("mouseleave",
            function() {
                c = setTimeout(function() {
                    e.removeClass("TK-qutu-wrap-hover"),
                    d = !1,
                    c = null
                },
                300)
            }),
            e.on({
                mouseover: function() {
                    clearTimeout(c),
                    e.addClass("TK-qutu-wrap-hover")
                },
                mouseout: function() {
                    c = setTimeout(function() {
                        e.removeClass("TK-qutu-wrap-hover"),
                        l.trackEvent("Bottomtab_curve_PV"),
                        l.trackLog("Bottomtab_curve_PV"),
                        d = !1,
                        c = null
                    },
                    300)
                }
            }),
            this.getBtnClass(a, b)
        },
        getAvg: function(a) {
            for (var b = a.length,
            c = 0,
            d = 0; b > d; d++) c += a[d];
            return c / b
        },
        getYdata: function() {
            for (var a, b, c, d, e = this,
            f = [], h = [], i = 0; i < this.price.length; i++) a = Math.round((this.upYAxi - this.price[i]) * this.matchY) + (this.fixs.beginXY - 2),
            b = this.price[i],
            e.tag || i < this.price.length - 1 && (f.push(2 * a), h.push(g(b, !0))),
            f.push(2 * a),
            b === this.min ? c = a: b === this.max && (d = a),
            h.push(g(b, !0));
            if (!e.tag) {
                var j = f.length;
                f.push(f[j - 1])
            }
            return {
                Ypx: f,
                Yprice: h,
                minY: c,
                maxY: d
            }
        },
        getXdata: function() {
            for (var a, b, c, e, f, g = [], h = [], i = this, j = 0; j < this.date.length; j++) e = Math.round(this.date[j] / 864e5),
            a = Math.round((e - this.minDay) * this.matchX),
            c = new Date(this.date[j]),
            b = c.getFullYear() + "/" + d(c.getMonth() + 1) + "/" + d(c.getDate()),
            i.tag || j > 0 && (g.push(2 * (a + this.fixs.beginXY - 8)), h.push(b)),
            g.push(2 * a),
            this.price[j] === this.min && (f = a + this.fixs.beginXY),
            h.push(b);
            if (!i.tag) {
                var k = g.length;
                g.push(g[k - 1] + 6)
            }
            return {
                Xpx: g,
                Xdate: h,
                minX: f
            }
        },
        pareSetp: function(a, b, c) {
            var d, e = this,
            f = b - a,
            g = 100;
            d = "floor" === c ? Math.floor(f / 3 / g) * g: "ceil" === c ? Math.ceil(f / 3 / g) * g: Math.round(f / 3 / g) * g,
            0 === d && (d = 100);
            var h = function(a) {
                for (var b = "1",
                c = 1; a > c; c++) b += "0";
                return parseInt(b, 10)
            },
            i = d.toString().length,
            j = d / h(i);
            return g = Math.round(j) * h(i),
            0 === f ? g = 100 : 100 > f && (g = 50, e.warpNum = 2),
            g
        },
        parseDownYAxi: function(a, b, c) {
            return a = Math.floor(a / b) * b
        },
        nextUniq: function(a) {
            for (var b, c, d = a,
            e = [], f = 0, g = d.length; g > f; f++) b = d[f],
            c = d[f + 1],
            "undefined" != typeof c ? (new Date(b.time).getMonth() + 1 !== new Date(c.time).getMonth() + 1 || new Date(b.time).getDate() !== new Date(c.time).getDate()) && e.push(d[f]) : e.push(d[f]);
            return e
        },
        getPriceAndDate: function(a) {
            var b, c = this.nextUniq(a),
            d = [],
            e = [],
            f = [];
            if (c[0]) for (var g = 0; g < c.length; g++) b = {
                price: c[g].price,
                time: new Date(c[g].time).getTime()
            },
            d.push(b.price),
            e.push(b.time),
            f.push(b);
            else d = [this.nPrice],
            e = [(new Date).getTime() - 50112e5],
            f = [];
            return {
                price: d,
                date: e,
                parseData: f
            }
        },
        getYaxisData: function(a, b) {
            var c = [],
            d = a,
            e = this.downYAxi;
            2 !== this.warpNum || this.tag || (d = 100);
            for (var f = 0; f < this.warpNum; f++) c.unshift(e),
            e += d;
            return c
        },
        getXaerx: function() {
            var a = (new Date).getTime() - 7776e5,
            b = a - 5184e6,
            c = 864e6;
            this.minDay = Math.round(b / 864e5);
            for (var e, f, g = [], h = {
                0 : "1",
                1 : "2",
                2 : "3",
                3 : "4",
                4 : "5",
                5 : "6",
                6 : "7",
                7 : "8",
                8 : "9",
                9 : "10",
                10 : "11",
                11 : "12"
            },
            i = 0; 6 > i; i++) b += c,
            e = new Date(b),
            f = d(h[e.getMonth()]) + "/" + d(e.getDate()),
            g.push(f);
            return g
        },
        dashedLineTo: function(a, b, c, d, e, f) {
            "undefined" == typeof f && (f = 5);
            var g = d - b,
            h = e - c,
            i = Math.floor(Math.sqrt(g * g + h * h)),
            j = 0 >= f ? i: i / f,
            k = h / i * f,
            l = g / i * f;
            a.beginPath();
            for (var m = 0; j > m; m++) m % 2 ? a.lineTo(b + m * l, c + m * k) : a.moveTo(b + m * l, c + m * k);
            a.stroke()
        },
        getObjXY: function() {
            for (var a, b = this.getYdata().Ypx, c = this.getXdata().Xpx, d = this.getYdata().Yprice, e = this.getXdata().Xdate, f = [], g = 0; g < c.length; g++) a = {
                x: c[g],
                y: b[g],
                p: d[g],
                d: e[g]
            },
            f.push(a);
            return f
        },
        drawCanvasBase: function(a, b) {
            var c = document.getElementById("TK-canvas-base"),
            d = this.fixs.beginXY,
            e = 2 * (210 + d),
            f = 760,
            h = this.warpNum,
            i = this.fixs.ySetpPx;
            if (b && (h = 3, i = 70), c.getContext) {
                var j = c.getContext("2d"),
                k = 108;
                j.lineWidth = 2,
                j.strokeStyle = "#e6e6e6";
                for (var l = 0; h >= l; l++) j.beginPath(),
                j.moveTo(d, l * i * 2 + d),
                j.lineTo(f, l * i * 2 + d),
                j.stroke();
                j.beginPath(),
                j.moveTo(d, d),
                j.lineTo(d, e),
                j.stroke();
                for (var m = 0; 6 >= m; m++) j.beginPath(),
                j.moveTo(k, d),
                j.lineTo(k, e),
                k += 108,
                j.stroke();
                j.save();
                var n, o = this.getYdata().Ypx,
                p = this.getXdata().Xpx;
                if (this.tag) {
                    for (var q = 0; q < o.length; q++) j.beginPath(),
                    j.arc(p[q], o[q], 5, 0, 2 * Math.PI, !1),
                    j.fillStyle = a,
                    j.fill();
                    j.strokeStyle = a,
                    this.dashedLineTo(j, p[0], o[0], p[1], o[1], 4),
                    j.font = "24px Arial",
                    j.fillStyle = "#666",
                    j.fillText("¥" + g(this.max, !0), 760, 230)
                } else if (b) {
                    for (n = 0; n < o.length; n++) j.beginPath(),
                    j.arc(p[n], o[n], 2, 0, 2 * Math.PI, !1),
                    j.fillStyle = a,
                    j.fill(),
                    j.lineWidth = 4,
                    j.strokeStyle = a,
                    j.beginPath(),
                    j.moveTo(p[n], o[n]),
                    j.lineTo(p[n + 1], o[n + 1]),
                    j.stroke();
                    this.dashedLineTo(j, 12, o[0], p[0], o[0], 4),
                    j.strokeStyle = a,
                    j.font = "24px Arial",
                    j.fillStyle = "#666",
                    j.fillText("¥" + g(this.max, !0), 760, 230)
                } else {
                    for (n = 0; n < o.length; n++) j.beginPath(),
                    j.arc(p[n], o[n], 2, 0, 2 * Math.PI, !1),
                    j.fillStyle = a,
                    j.fill(),
                    j.lineWidth = 4,
                    j.strokeStyle = a,
                    j.beginPath(),
                    j.moveTo(p[n], o[n]),
                    j.lineTo(p[n + 1], o[n + 1]),
                    j.stroke();
                    this.dashedLineTo(j, 12, o[0], p[0], o[0], 4),
                    j.font = "24px Arial",
                    j.fillStyle = "#666",
                    j.fillText("最高价", 760, 2 * (this.getYdata().maxY + 2)),
                    j.fillText("¥" + g(this.max, !0), 760, 2 * (this.getYdata().maxY + 14)),
                    j.fillText("最低价", 760, 2 * (this.getYdata().minY + 2)),
                    j.fillText("¥" + g(this.min, !0), 760, 2 * (this.getYdata().minY + 14))
                }
            }
        },
        drawCanvasLayout: function(a) {
            var b = this,
            c = document.getElementById("TK-canvas-layout");
            if (c.getContext) {
                var d, e, f = c.getContext("2d"),
                g = function() {
                    var g = b.getObjXY();
                    i(c).on("mousemove",
                    function(h) {
                        d = h.pageX || h.clientX || 0,
                        e = h.pageY || h.clientY || 0,
                        d -= i(c).offset().left,
                        e -= i(c).offset().top,
                        f.clearRect(0, 0, c.width, c.height),
                        b.msgBox.hide(),
                        i(g).each(function(c, e) {
                            d >= e.x / 2 - 2 && g[c + 1] && d <= g[c + 1].x / 2 - 2 && (b.msgBox.css({
                                left: d - 16,
                                top: e.y / 2 - 46
                            }).show(), b.msgBox.html('<div class="TK-qutu-msg-wrap"><p>日期：' + b.pxTodata(d) + "</p><p>价格：<span>&yen " + e.p + "</span></p></div>"), f.beginPath(), f.arc(2 * d, e.y, 8, 0, 2 * Math.PI, !1), f.fillStyle = a, f.fill())
                        })
                    })
                };
                g()
            }
        },
        pxTodata: function(a) {
            var b, c = 864e5 * (a / this.matchX + this.minDay),
            e = {
                0 : "1",
                1 : "2",
                2 : "3",
                3 : "4",
                4 : "5",
                5 : "6",
                6 : "7",
                7 : "8",
                8 : "9",
                9 : "10",
                10 : "11",
                11 : "12"
            },
            f = new Date(c);
            return b = f.getFullYear() + "/" + d(e[f.getMonth()]) + "/" + d(f.getDate())
        },
        drawYaxi: function() {
            for (var a = this.yAxis,
            b = "",
            c = 0; c < a.length; c++) b += '<span class="TK-qutu-price-item TK-qutu-price-item-' + this.yAxisClass + '">' + g(a[c]) + "</span>";
            i(".TK-qutu-price").html(b)
        },
        drawXaxi: function() {
            var a = this.xAxis,
            b = "";
            i.each(a,
            function(a, c) {
                b += '<span class="TK-qutu-data-item">' + c + "</span>"
            }),
            i(".TK-qutu-data").html(b)
        }
    },
    c.exports = {
        init: function() {
            m.qutuViewDeferred.promise().then(function(a) {
                var b = k["bijia/taobao.qutu"];
                m.$el.find(".TTS-qutu-wrap").empty().append(b()),
                a && i.getJSON("//www.gmf.com/priceHistory.php?ttsid=" + a + "&callback=?",
                function(a) {
                    l.trackEvent("Bottomtab_curvebutton_PV"),
                    new h(a, {}),
                    n.trigger("tk.priceHistory", [a])
                })
            })
        }
    }
}),
__tk__define("views/bijia/taobao.remind", ["../../lib/jquery", "./taobao", "../../lib/underscore", "../../utils", "../../host", "../../templates.jst", "../../utils/tts_stat", "../../models/models", "../../models/taobao", "../../models/jsonp", "../prefix", "../../models/api", "../../product", "../../utils/env", "../../models/b2c", "../../models/remind", "../../models/lds", "../../models/juxiao", "../../models/tuan", "../../configureView", "../../configureModel", "../../mustache_helpers", "../../lib/handlebars", "./taobao.remind", "../remind/main", "../remind/qutu", "../remind/under"],
function(a, b, c) {
    function d() {
        f.trigger("tk.user")
    }
    var e = a("../../lib/jquery"),
    f = e("body"),
    g = a("./taobao");
    c.exports = {
        init: function() {
            g.remindViewDeferred.promise().then(function() {
                d()
            })
        }
    }
}),
__tk__define("views/bijia/taobao.tuan", ["../../lib/jquery.countdown", "../../utils", "../../lib/jquery", "../../host", "../../templates.jst", "../../utils/tts_stat", "../../lib/underscore", "../../models/models", "../../models/taobao", "../../models/jsonp", "../prefix", "../../models/api", "../../product", "../../utils/env", "../../models/b2c", "../../models/remind", "../../models/lds", "../../models/juxiao", "../../models/tuan"],
function(a, b, c) {
    var d = a("../../lib/jquery.countdown"),
    e = (a("../../utils"), a("../../templates.jst")),
    f = a("../../utils/tts_stat");
    a("../../models/models");
    c.exports = {
        init: function(a, b) {
            this.parentView = a,
            this.attachModelEvent(),
            this.attachViewEvent(),
            this.list = !1,
            b && (this.list = !0)
        },
        $el: null,
        template: e["bijia/taobao.tuan"],
        modelDeferred: new d.Deferred,
        attachModelEvent: function() {
            var a = this;
            d("body").on({
                "tuan.sync.success": function(b, c) {
                    a.modelDeferred.resolve(c)
                },
                "tts.bijia.tuan.render": function(b, c) {
                    a.renderView(c)
                }
            }),
            d.when(this.modelDeferred.promise(), a.parentView.viewDeferred.promise()).then(function(b) {
                a.initModel(b)
            })
        },
        attachViewEvent: function() {
            var a = this;
            d("body").one("click", ".bijia-more-tuan-unclicked",
            function() {
                d(this).removeClass("bijia-more-tuan-unclicked").addClass("bijia-more-tuan-clicked")
            }),
            d("body").on("mouseenter", ".TTS-list-right-wrap li",
            function() {
                var b = a.model[d(this).index()],
                c = e["bijia/taobao.tuan.pop"];
                f.trackEvent("Bottomtab_tuan_magnify_PV"),
                f.trackLog("Bottomtab_tuan_magnify_PV"),
                a.parentView.focusProduct(d(this)),
                a.parentView.showPopDialog(d(this), c, b),
                a.parentView.countdown(d(".TTS-bijia-pop").find(".TTS-product-countdown"))
            }).on("mouseleave", ".TTS-list-right-wrap li",
            function() {
                a.parentView.blurProduct(d(this)),
                a.parentView.hidePopDialog(d(this))
            })
        },
        initModel: function(a) {
            this.model = a.recomList,
            d("body").trigger("tts.bijia.tuan.render", [a])
        },
        renderView: function(a) {
            var b = this;
            a.recomList.length && (b.parentView.$el.find(".TTS-list-right").append(this.template({
                list: a.recomList,
                more: a.more
            })), f.trackEvent("Bottomtab_tuan_PV")),
            this.list || b.parentView.model.isShowRemind || b.parentView.model.isShowQutu || b.parentView.model.sameList.length || b.parentView.model.similarList.length || (a.recomList.length ? (b.parentView.$el.find(".TTS-list-right-wrap").addClass("TTS-list-right-left"), d("body").attr("id", "tts-res-disable")) : b.parentView.$el.find(".TTS-bijia-min-btn").trigger("click"))
        }
    }
}),
__tk__define("views/cart", ["../lib/jquery", "../utils", "../host", "../lib/underscore"],
function(a, b) {
    function c(a, b, c, d) {
        var e = {
            taobao: "淘宝",
            tmall: "天猫",
            "jd.com": "京东",
            amazon: "亚马逊",
            yihaodian: "1号店",
            dangdang: "当当网",
            suning: "苏宁易购",
            yixun: "易迅",
            vip: "唯品会",
            wanggou: "QQ网购",
            vjia: "凡客V+",
            vancl: "凡客诚品",
            moonbasa: "梦芭莎",
            coo8: "库巴",
            m18: "麦考林",
            xiu: "走秀",
            mbaobao: "卖包包",
            justyle: "justyle",
            hstyle: "韩都衣舍",
            liebo: "裂帛",
            ochirly: "欧时力官网",
            "hg-daigou": "韩购社官网",
            htjz: "核桃夹子",
            meilishuo: "美丽说",
            mogujie: "蘑菇街",
            gome: "国美在线",
            paipai: "拍拍"
        },
        f = "";
        location.host.indexOf(d) < 0 && (f = e[d]),
        a.attr("href", c).html('<span class="TK-source-product-expensive-hd">￥' + b + '</span><span class="TK-source-product-word">' + f + '有更划算的</span><span class="TK-source-product-expensive-bd"></span>').addClass("TK-source-product-expensive"),
        o.sourceProductExpensive()
    }
    function d(a) {
        a.text("你买对了").addClass("TK-source-product-cheap").off("click")[0].onclick = function() {
            return ! 1
        },
        o.sourceProductCheap()
    }
    function e() {
        return this.tkCart()
    }
    function f(a) {
        var b, c, d = "",
        e = "",
        f = "",
        h = "";
        return n.isTBCart || n.isTMCart ? (k(".item-content")[0] ? (d = k(".J_ItemBody").eq(a).find(".item-content").eq(0), e = d.find(".J_ItemSum").eq(0)) : (d = k(".J_ItemBody").eq(a).find(".item-content").eq(0), e = d.find(".s-total").eq(0).find("em").eq(0)), h = l.sliceID(d.find(".item-title").attr("href")), f = g(d.find(".J_Price").eq(0).text()), b = d.find(".item-title").text(), c = d.find(".itempic").attr("src").replace("_80x80.jpg", "")) : n.isJDCart ? (d = k(".item_form").eq(a), e = d.find(".price").eq(0), f = g(d.find(".price").eq(0).text()), b = d.find(".p-img img").attr("alt"), c = d.find(".p-img img").attr("src"), h = l.sliceID(d.find(".p-name a").attr("href"))) : n.isMLSCart ? (d = k(".goods").eq(a), e = function() {
            return d.find(".price_origial")[0] ? d.find(".price_origial").eq(0) : d.find(".price").eq(0)
        } (), f = g(d.find(".price").eq(0).text()), b = k.trim(d.find(".g-content .name").text()), c = d.find(".g-content img").attr("src"), h = l.sliceID(d.find(".g-content a").attr("href"))) : n.isMGJCart ? (d = k(".cart_mitem").eq(a), e = d.find(".cart_lightgray").eq(0), f = g(d.find(".cart_data_sprice").eq(0).text()), b = d.find(".cartImgTip").attr("alt"), c = d.find(".cartImgTip").attr("src"), h = l.sliceID(d.find(".cart_goods_img").attr("href"))) : n.isVIPCart ? (d = k(".J_goods_item").eq(a), e = d.find(".m-price").eq(0), f = g(d.find(".u-price").eq(0).text()), b = d.find(".product-pic img").attr("alt"), c = d.find(".product-pic img").attr("src"), h = l.sliceID(d.find(".product-pic a").attr("href"))) : n.isKaoLaCart ? (d = k(".gooditm").eq(a), e = d.find(".sum").eq(0), f = g(d.find(".newprice").eq(0).text()), b = d.find(".goodtlt a").eq(0).attr("title"), c = d.find(".imgwrap img").attr("src"), h = d.find(".goodtlt a").eq(0).attr("href").match(/[0-9]{6}|[0-9]{5}/)) : n.isLeFengCart ? (d = k(".list tr").eq(a), e = d.find(".u-price").eq(0), f = g(d.find(".u-price").eq(0).text()), b = d.find(".name").eq(0).html(), c = d.find(".pic img").attr("src"), h = d.find(".pic a").attr("href").match(/[0-9]{8}/)) : n.isBeiBeiCart && (d = k(".item-entry").eq(0), e = d.find(".price").eq(0), f = g(d.find(".view-EventTotal").eq(0).text()), b = d.find(".title").eq(0).html(), c = d.find(".image img").attr("src"), h = d.find(".image").eq(0).attr("href").match(/[0-9]{9}-[0-9]{6}/)),
        {
            con: e,
            price: f,
            title: b,
            pic: c,
            id: h
        }
    }
    function g(a) {
        var b = a;
        return b = k.trim(b),
        b.replace(/[^\x00-\xff]*/g, "").replace(/¥/g, "")
    }
    function h() {
        var a;
        return n.isTBCart || n.isTMCart ? a = k(".J_ItemBody") : n.isJDCart ? a = k(".item_form") : n.isMLSCart ? a = k(".goods") : n.isMGJCart ? a = k(".cart_mitem") : n.isVIPCart ? a = k(".J_goods_item ") : n.isKaoLaCart ? a = k(".gooditm") : n.isLeFengCart ? a = k(".list tr") : n.isBeiBeiCart && (a = k(".item-entry")),
        {
            list: a,
            size: a.size()
        }
    }
    function i(a, b) {
        function e(a) {
            var c = b[a],
            d = f(c).con,
            e = f(c).price,
            g = "";
            d.data("TK-cart") || (g = '<a data-title="' + f(c).title + '" data-pic="' + f(c).pic + '" data-id="' + a + '" data-price="' + e + '" class="TK-verification" target="_blank" href="#_">买贵了？验证一下》</a>', d.before(g), d.data("TK-cart", "true"))
        }
        function g() {
            function a(a, b, c) {
                var d = "//show.re.taobao.com/feature.htm?cb=?";
                k.ajax({
                    dataType: "jsonp",
                    url: d,
                    data: {
                        auction_ids: b,
                        feature_names: "promoPrice",
                        from: "taobao_search"
                    }
                }).done(function(b) {
                    function d(a, b) {
                        var c = !1;
                        return k.each(a,
                        function(a, d) {
                            parseInt(d.auction_id, 10) === parseInt(b, 10) && "" !== d.promoPrice && (c = d.promoPrice > 1e3 ? parseInt(d.promoPrice, 10) : d.promoPrice)
                        }),
                        c
                    }
                    k.each(a,
                    function(a, c) {
                        var e;
                        c.promoPrice && m.isString(c.promoPrice) && "" !== c.promoPrice && "-1" !== c.promoPrice && "0" !== c.promoPrice && (c.price = c.promoPrice),
                        e = d(b, c.sourceId),
                        e && (c.price = e)
                    }),
                    c(a)
                })
            }
            function b(b, c) {
                var d = "";
                m.each(b,
                function(a) {
                    a.clickUrl.match(/taobao|tmall/) && (d += a.sourceId + ",")
                }),
                "" !== d ? a(b, d,
                function(a) {
                    c(m.min(a,
                    function(a) {
                        return parseFloat(a.price)
                    }))
                }) : (k.each(b,
                function(a, b) {
                    b.promoPrice && m.isString(b.promoPrice) && "" !== b.promoPrice && "-1" !== b.promoPrice && "0" !== b.promoPrice && (b.price = b.promoPrice)
                }), c(m.min(b,
                function(a) {
                    return parseFloat(a.price)
                })))
            }
            var e = "//browserre.taotaosou.com/getTkJsonItems.do?clientId=1&ptyp=" + n.pageType + "&website=" + n.webSite + "&jsonp=?";
            k(".TK-verification").on("click",
            function(a) {
                var f = k(this),
                g = f.data("id"),
                h = f.data("price");
                f.hasClass("TK-source-product-expensive") === !1 ? (a.preventDefault(), k.getJSON(e + "&itemId=" + f.data("id") + "&pic=" + f.data("pic") + "&title=" + encodeURIComponent(f.data("title"))).done(function(a) {
                    var e = a.sameList,
                    i = "";
                    e[0] ? b(e,
                    function(a) {
                        g !== a.sourceId && parseFloat(h) > parseFloat(a.price) ? (i += a.clickUrl, c(f, a.price, i, a.webSite)) : d(f)
                    }) : d(f)
                }), f.addClass("TK-loading"), o.buttonClick()) : o.sourceProductExpensiveClick()
            })
        }
        m.each(a,
        function(a) {
            e(a, b)
        }),
        g();
        var h; (n.isTBCart || n.isTMCart) && (h = k("#cart .J_TotalNum").text()),
        o.log(h, a.length, k(".TK-verification").length)
    }
    function j(a) {
        var b, c = null,
        d = "//browserre.taotaosou.com/maiguile.do?callback=?&ids=",
        f = "//browserre.taotaosou.com/maiguile.do?callback=?&ids=";
        c && clearInterval(c),
        c = setInterval(function() {
            if (0 !== h().size) {
                b = new e;
                var g = b.list.splice(0, 10),
                i = b.list,
                j = b.title.splice(0, 10),
                l = b.title;
                d += g.toString(),
                d += "&titles=";
                for (var m = "",
                n = 0; n < j.length; n++) m += "," + encodeURIComponent(j[n]);
                if (d += m.substring(1), k.getJSON(d).done(function(c) {
                    return c ? void(c && c[0] && (p = p.concat(c), a(p, b.itemid))) : !1
                }), i[0]) {
                    f += i.toString(),
                    f += "&titles=";
                    for (var o = "",
                    q = 0; q < l.length; q++) o += "," + encodeURIComponent(l[q]);
                    f += o.substring(1),
                    k.getJSON(f).done(function(c) {
                        return c ? void(c && c[0] && (p = p.concat(c), a(p, b.itemid))) : !1
                    })
                }
                clearInterval(c)
            }
        },
        200)
    }
    var k = a("../lib/jquery"),
    l = a("../utils"),
    m = a("../lib/underscore"),
    n = a("../host"),
    o = {},
    p = [];
    o = {
        log: function(a, b, c) {
            l.statLog({
                systemName: "ttk_overpay_log",
                allg: a,
                vcatg: b,
                opays: c
            })
        },
        buttonClick: function() {
            l.stat("overpay_Clk", !0),
            l.kLog({
                systemName: "cart",
                ref: encodeURIComponent(document.referrer)
            })
        },
        sourceProductCheap: function() {
            l.stat("right_show", !0)
        },
        sourceProductExpensive: function() {
            l.stat("cheaper_show", !0)
        },
        sourceProductExpensiveClick: function() {
            l.stat("cheaper_Clk", !0)
        }
    },
    e.fn = e.prototype = {
        result: {
            itemid: {},
            list: [],
            title: []
        },
        push: function(a, b, c) {
            this.result.itemid[a] = b,
            this.result.list.push(a),
            this.result.title.push(c)
        },
        tkCart: function() {
            var a = this,
            b = h().list;
            return b[0] && b.each(function(b, c) {
                var d = f(b),
                e = d.id,
                g = d.title,
                h = d.price,
                i = "",
                j = "";
                l.statLog_img({
                    systemName: "ttk_user_info",
                    pType: n.pageType,
                    price: h,
                    pid: e,
                    title: encodeURIComponent(g),
                    list_num: b + 1,
                    cid: i,
                    trade_time: encodeURIComponent(j)
                }),
                m.isNumber(e) ? a.push(e, b, g) : a.push(e, b, g)
            }),
            this.result
        }
    },
    b.init = function() {
        var a = k("body");
        a.addClass("CART"),
        n.isTBCart ? a.addClass("TB") : n.isJDCart ? a.addClass("JD-CART") : n.isMLSCart ? a.addClass("MLS-CART") : n.isVIPCart ? a.addClass("VIP-CART") : n.isMGJCart ? a.addClass("MGJ-CART") : n.isKaoLaCart && a.addClass("KAOLA-CART"),
        j(i)
    }
}),
__tk__define("views/db11Banner", ["../utils", "../lib/jquery", "../host", "../models/jsonp", "../templates.jst"],
function(a, b, c) {
    function d() {
        e()
    }
    function e() {
        i({
            url: "//www.gmf.com/tumeiti-bottom.php?adType=0,0,1,0&keyword=0,0," + encodeURIComponent(document.title.replace(/,/, " ")) + ",0&adSize=0,0,950*90,0&itemSize=0,0,1,0&tbId=&pid=394_" + h.DITCH_ID + "&jsonp=?",
            timeout: 1e4,
            done: function(a) {
                a.pinpai[0] && (a.pinpai[0].bgc = a.pinpai[0].title.match(/#\w+$/), a.pinpai[0].title = a.pinpai[0].title.replace(/#\w+$/, ""), f(a.pinpai[0]))
            }
        })
    }
    function f(a) {
        var b = j["bijia/db11banner"],
        c = b(a),
        d = document.createElement("div");
        d.innerHTML = c;
        var e = document.getElementsByTagName("body")[0];
        e.insertBefore(d, e.firstChild),
        g()
    }
    function g() {
        k(".TK_banner_close").on("click",
        function(a) {
            a.stopPropagation(),
            k(".TK_banner_wrap").parent().css("display", "none"),
            l.cookie.set({
                name: "TK_banner",
                value: !0,
                day: 1
            })
        })
    }
    var h = a("../utils"),
    i = a("../models/jsonp"),
    j = a("../templates.jst"),
    k = a("../lib/jquery"),
    l = a("../utils"),
    m = a("../host");
    k("body"); (m.isTBDetail || m.isTMDetail) && d()
}),
__tk__define("views/event.extend", ["../lib/jquery", "../utils", "../host", "../product", "./render.extend", "./prefix", "./Box.extend", "../models/comment", "../models/jsonp"],
function(a, b) {
    var c, d, e = a("../lib/jquery"),
    f = a("../utils"),
    g = a("../product"),
    h = a("./render.extend"),
    i = a("./prefix"),
    j = a("./Box.extend"),
    k = window.navigator.userAgent.match(/MSIE 6.0/),
    l = e("body");
    b.init = function() {
        l.on({
            "tkextend.global.display": function(a, b) {
                var c = e("." + i.app + "bd");
                k ? c.data("status", "close").css("display", "block") : c.data("status", "close").slideDown(),
                b && !b.isNoFound && e("." + i.app + "tabs-button").eq(e("." + i.app + "tabs-panel." + i.app + "tabs-panel-selected").index()).addClass(i.app + "tabs-tab-selected"),
                e("." + i.app + "close").removeClass(i.app + "open")
            },
            "tkextend.global.remove": function() {
                var a = e("." + i.app + "bd");
                k ? a.data("status", "close").css("display", "none") : a.data("status", "close").slideUp(),
                e("." + i.app + "close").addClass(i.app + "open"),
                e("." + i.app + "tabs-tab-selected").removeClass(i.app + "tabs-tab-selected"),
                e(this).trigger("tkstat.global.remove")
            },
            "tkextend.global.open": function(a, b, c, d) {
                if ("btnTouch" === b) {
                    var f = e("." + i.app + "bd");
                    "open" === f.data("status") && (l.trigger("tkextend.global.display", [d]), l.trigger("tkstat.global.focus", [c]), e("#" + i.app + "404-same")[0] || e("." + i.app + "fail")[0] || l.trigger("tkstat.global.success", [d, "touch"]))
                }
                "load" === b ? (l.trigger("tkextend.global.display", [d]), l.trigger("tkstat.global.focus", [c]), e("#" + i.app + "404-same")[0] || e("." + i.app + "fail")[0] || l.trigger("tkstat.global.success", [d, "touch"])) : "unload" === b && (l.trigger("tk.global.init", [e("#J_ImgBooth")[0],
                function() {
                    l.trigger("tkstat.global.detailpv")
                }]), h.init())
            },
            "tkextend.global.toggle": function(a, b) {
                var c = e("." + i.app + "bd");
                "close" === c.data("status") ? (e(this).trigger("tkextend.global.remove"), c.data("status", "open")) : "open" === c.data("status") && (e(this).trigger("tkextend.global.open", ["load", "toggle", b]), c.data("status", "close"))
            },
            "tkextend.btn.click": function(a, b) {
                var c = "";
                b.isTtsCategory && (c += "&cid=" + b.cid, "undefined" != typeof b.sex && (c += "&sex=" + b.sex));
                var d = f.getUndertakePage(g.item.getID()) + "&utm_source=" + f.site() + "_btn" + c + "&title=" + encodeURIComponent(g.item.getTitle());
                f.isManualDId && (d += "&isauto=1"),
                window.open(d),
                e(this).trigger("tkstat.global.button")
            },
            "tkextend.tab.change": function(a, b, c) {
                function d() {
                    var a = 0,
                    c = e("." + i.app + "tabs-button"),
                    d = e("." + i.app + "tabs-panel");
                    c.each(function(c, d) {
                        b === d && (a = c)
                    }),
                    d[a] && (c.removeClass(i.app + "tabs-tab-selected"), e(b).addClass(i.app + "tabs-tab-selected"), d.removeClass(i.app + "tabs-panel-selected").eq(a).addClass(i.app + "tabs-panel-selected"))
                }
                "open" === e("." + i.app + "bd").data("status") && e(this).trigger("tkextend.global.open", ["load", "tab", c]),
                f.stat("Focus_Tab", !0),
                d()
            },
            "tkextend.mangnifier.open": function(a, b, c) {
                var d = new j.Magnifier,
                h = b.find(".TK-media img"),
                k = h.attr("src").replace(/80x80|110x110/, "210x210"),
                l = b.find(".TK-media").attr("href"),
                m = h.attr("alt"),
                n = b.find(".TK-media").data().stat,
                o = {
                    target: b,
                    img: k,
                    title: m,
                    url: l,
                    iscom: n.iscom,
                    level: f.getLevelImg(n.level, g.item.getLevel())
                };
                "" !== n.com && e.extend(o, {
                    com: n.com
                });
                var p = "1";
                d.render(o),
                e(this).trigger("tkstat.mangnifier.open"),
                d.getBox().find("." + i.app + "detail").on("click",
                function() {
                    e("body").trigger("tkstat.global.product", [c, e(this), e(this).parents("." + i.app + "tabs-panel").index(), void 0, p]),
                    e("body").trigger("tkstat.mangnifier.click")
                }),
                d.getBox().find(".J_comlink").on("click",
                function() {
                    e("body").trigger("tkstat.global.product", [c, e(this), e(this).parents("." + i.app + "tabs-panel").index(), "com", p]),
                    e("body").trigger("tkstat.mangnifier.click")
                })
            },
            "tkextend.mangnifier.remove": function() {
                e("#" + i.app + "BOX ." + i.app + "detail").off("click"),
                j.Magnifier.remove(),
                e("." + i.app + "comment-active").removeClass(i.app + "comment-active")
            },
            "tkextend.comment.toggle": function(b, c, d) {
                var f = new j.Comment,
                g = a("../models/comment");
                c.hasClass(i.app + "comment-active") ? (c.removeClass(i.app + "comment-active"), f.remove()) : (g.fetch(d), e(this).one("tk.sync.comment",
                function(a, b) {
                    c.addClass(i.app + "comment-active"),
                    f.remove(),
                    f.render(c.parents("." + i.app + "item"), b),
                    f.scroll.auto(),
                    e("#" + i.app + "Box-comment").on("mouseenter",
                    function() {
                        f.scroll.stop()
                    }),
                    e("#" + i.app + "comment-btn-prev").on("click",
                    function() {
                        f.scroll.prev(),
                        e("body").trigger("tkstat.comment.scroll")
                    }),
                    e("#" + i.app + "comment-btn-next").on("click",
                    function() {
                        f.scroll.next(),
                        e("body").trigger("tkstat.comment.scroll")
                    }),
                    e(this).trigger("tkstat.comment.open")
                }), e(this).one("tk.sync.commentfail",
                function() {
                    e(this).trigger("tkstat.comment.fail"),
                    f.renderFail()
                }))
            },
            "tkextend.resize.btn": function(a, b, f) {
                var g, h = e(window),
                i = h.height(),
                j = h.width(); (void 0 === c || c !== i || void 0 === d || d !== j) && (g = b.offset(), f.css({
                    left: g.left + b.width() / 2 - 40,
                    top: g.top + b.height() - 40
                }), c = i, d = j)
            }
        })
    }
}),
__tk__define("views/event.handle", ["../lib/jquery", "../lib/underscore", "../host", "../utils", "../product", "./prefix", "./event.list", "./event.sms"],
function(a, b, c) {
    function d() {
        var a, b;
        "object" == typeof window.com && "object" == typeof window.com.b5m && (e("head").append('<iframe id="TK-Console"></iframe>'), window.open = e("#TK-Console")[0].contentWindow.open, window.com = void 0, window.$5m = void 0, a = e("#adv-wrap"), a[0] && a.remove(), b = e("#MiniB5T"), b[0] && b.remove())
    }
    var e = a("../lib/jquery"),
    f = a("../lib/underscore"),
    g = a("../host"),
    h = a("../utils"),
    i = a("../product"),
    j = a("./prefix"),
    k = location.href.match(/&debug=true/),
    l = e("body");
    l.on({
        "tkstat.global.detailpv": function() {
            h.statLog({
                systemName: "ttk_dpv",
                id: i.item.getID()
            })
        },
        "tkstat.global.focus": function(a, b) {
            var c = "";
            "toggle" === b ? c = "_Dwn": "tab" === b ? c = "_Lab": "button" === b ? c = "_Btn": "auto" === b && (c = "_Img"),
            h.stat("Focus" + c, !0)
        },
        "tkstat.global.button": function() {
            h.stat("Dclick_Button", !0),
            h.statLog({
                systemName: "ttk_Btn_log",
                pTyp: g.pageType,
                sPid: "tb_" + i.item.getID() || "",
                sPric: i.item.getPrice() || "",
                sVolum: i.item.getSum() || "",
                sSpid: window.g_config && window.g_config.shopId || "",
                sLevel: i.item.getLevel(),
                cid: i.item.getCid() || "",
                url: 1,
                ditch: h.DITCH_ID || ""
            })
        },
        "tkstat.global.timeout": function() {
            h.stat("DataTimeout", !0)
        },
        "tkstat.global.display": function(a, b, c) {
            h.statLog_one({
                systemName: "ttk_display_log",
                sid: b.sid || "",
                catid: b.cid || "",
                ditch: h.DITCH_ID || "",
                vcat: b.isTtsCategory ? 1 : 0,
                mType: b.mType,
                TabFr: c
            })
        },
        "tkstat.global.success": function(a, b, c, d) {
            "default" === c ? h.stat("Frame_Success_D", !0) : "touch" === c ? h.stat("Frame_Success_T", !0) : "image" === c && h.stat("Frame_Success_I", !0),
            "same" === d ? h.statLog_one({
                systemName: "ttk_display_log",
                sid: b.sid || "",
                catid: b.cid || "",
                ditch: h.DITCH_ID || "",
                vcat: b.isTtsCategory ? 1 : 0,
                mType: b.mType,
                TabFr: 1
            }) : "recom" === d ? h.statLog_one({
                systemName: "ttk_display_log",
                sid: b.sid || "",
                catid: b.cid || "",
                ditch: h.DITCH_ID || "",
                vcat: b.isTtsCategory ? 1 : 0,
                mType: b.mType,
                TabFr: 3
            }) : h.statLog_one({
                systemName: "ttk_display_log",
                sid: b.sid || "",
                catid: b.cid || "",
                ditch: h.DITCH_ID || "",
                vcat: b.isTtsCategory ? 1 : 0,
                mType: b.mType
            });
            var e = b.dimension,
            f = "_cat3";
            f = b.isTtsCategory ? "_cat1": "_cat3",
            void 0 !== e && (e.match(/t63/) ? h.stat("show_t63" + f, !0) : e.match(/GF/) || e.match(/LF/) ? h.stat("show_vsame" + f, !0) : e.match(/TV/) ? h.stat("show_vsimilar" + f, !0) : e.match(/recom/) ? h.stat("show_recom" + f, !0) : e.match(/t051/) ? h.stat("show_t051" + f, !0) : e.match(/t05/) ? h.stat("show_t05" + f, !0) : e.match(/api/) ? h.stat("show_api" + f, !0) : e.match(/style/) && h.stat("show_style" + f, !0))
        },
        "tkstat.global.tag": function() {
            var a = "";
            e(".J-" + j.app + "tag-item").each(function() {
                e(this).text().match(/price/) && (a += "1"),
                e(this).text().match(/sum/) && (a += "2"),
                e(this).text().match(/credit/) && (a += "3")
            }),
            "" !== a && h.stat("TB_S_Label_" + a)
        },
        "tkstat.global.logo": function() {
            h.stat("Logo_Click", !0)
        },
        "tkstat.global.more": function() {
            h.stat("M_Click", !0)
        },
        "tkstat.global.product": function(a, b, c, d, i, k) {
            var l, m = "",
            n = b.dimension,
            o = c.data("stat"),
            p = {},
            q = "_cat3_ck";
            if (f.isUndefined(o.mType) ? "mType" in b && (l = b.mType[d] ? b.mType[d] : b.mType) : l = o.mType, c.attr("href").match(/s.click.taobao.com/) && h.stat("TB_CPS_S_Click"), c.parents(".TK-item").find(".J-" + j.app + "tag-item")[0] && (c.parents(".TK-item").find(".J-" + j.app + "tag-item").each(function() {
                e(this).text().match(/price/) && (m += "1"),
                e(this).text().match(/sum/) && (m += "2"),
                e(this).text().match(/credit/) && (m += "3")
            }), h.stat("TB_S_LabelKC_" + m)), "image" === i ? (h.stat("S_Click_I", !0), "imageCom" === i && h.stat("PL_S_Click_T", !0)) : "default" === i ? h.stat("S_Click_D", !0) : "com" === i ? h.stat("PL_S_Click_T", !0) : h.stat("S_Click_T", !0), "4" === k) {
                var r = "";
                r = g.isDetail ? "TB_Detail_more_tuan": "TB_list_more_tuan",
                h.statLog_img({
                    systemName: "bijia_item_click",
                    itemId: o.pid,
                    ctype: r
                })
            }
            "undefined" !== k && (p = {
                systemName: "ttk_clikc",
                ditch: h.DITCH_ID,
                sid: b.sid || "",
                pTyp: g.pageType,
                sPric: b.price || "",
                sProPric: b.promoPrice || "",
                sVolum: b.sales || "0",
                sSpid: b.sellerId || "",
                sLevel: b.creditGrade || "",
                cid: b.cid || "",
                pid: o.pid || "",
                pric: o.pric || "",
                proPric: "null" !== o.proPric && o.proPric || "",
                volum: o.volum || "",
                level: o.level || "",
                pos: e(".TK-detail").index(c) || "",
                mType: l || "",
                TabFr: k || "",
                Website: o.shop || ""
            },
            g.isB2CList || g.isB2CDetail ? p.sPid = "": p.sPid = b.itemId || "p4p", h.statLog(p)),
            q = b.isTtsCategory ? "_cat1_ck": "_cat3_ck",
            n.match(/t63/) ? h.stat("show_t63" + q, !0) : n.match(/GF/) || n.match(/LF/) ? h.stat("show_vsame" + q, !0) : n.match(/TV/) ? h.stat("show_vsimilar" + q, !0) : n.match(/recom/) ? h.stat("show_recom" + q, !0) : n.match(/t051/) ? h.stat("show_t051" + q, !0) : n.match(/t05/) ? h.stat("show_t05" + q, !0) : n.match(/api/) ? h.stat("show_api" + q, !0) : n.match(/style/) && h.stat("show_style" + q, !0)
        },
        "tkstat.global.remove": function() {
            h.stat("X_click", !0)
        },
        "tkstat.global.hover": function() {
            h.stat("Appear", !0)
        },
        "tkstat.source.productclick": function(a, b) {
            var c, d = !1;
            f.isString(b.href) && !f.isElement(e(b).parents("#" + j.app + "con")[0]) && (b.href.match(/item.htm|simba.taobao.com|etao.com|autorank.jd.com|item.jd.com/) || g.isDDList || g.isYHDList || g.isVjiaList || g.isSuningList) && (c = {
                systemName: "ttk_lpv",
                id: h.sliceID(b.href) || "P4P",
                status: ""
            },
            d = !e("." + j.app + "min")[0], d && (c.status = "success"), h.statLog(c))
        },
        "tkstat.mangnifier.open": function() {
            h.stat("FDJ_PV", !0)
        },
        "tkstat.mangnifier.click": function() {
            h.stat("FDJ_Clk", !0)
        },
        "tkstat.comment.open": function() {
            h.stat("PL_Show", !0)
        },
        "tkstat.comment.scroll": function() {
            h.stat("PL_Scroll", !0)
        },
        "tkstat.comment.fail": function() {
            h.stat("PL_NULL", !0)
        },
        "tkstat.nofound.show": function(a, b) {
            "text" === b ? h.stat("Text_Adshow", !0) : "pic" === b && h.stat("Pic_Adshow", !0)
        },
        "tkstat.nofound.click": function(a, b) {
            "text" === b ? h.stat("Text_Adclk", !0) : "pic" === b && h.stat("Pic_Adclk", !0)
        },
        "tkstat.dapei.click": function() {
            h.stat("DP_Clk", !0)
        }
    }),
    l.on({
        "tkdebug.info": function(a, b) {
            window.console.dir({
                id: b.getID(),
                title: b.getTitle(),
                price: b.getPrice(),
                img: b.getImg(),
                cid: b.getCid(),
                href: b.getHref(),
                level: b.getLevel(),
                location: b.getLocation(),
                nick: b.getNick(),
                sex: b.getSex(),
                sum: b.getSum()
            })
        },
        "tkdebug.error": function(a, b) {
            window.console.error(b.stack)
        },
        "tkdebug.console": function() { (f.isObject(window.console) === !1 || f.isFunction(window.console.log) === !1 || f.isFunction(window.console.dir) === !1 || f.isFunction(window.console.error) === !1) && (e("body").append('<iframe id="TK-Console"></iframe>'), window.console = e("#TK-Console")[0].contentWindow.console)
        },
        "tk.global.init": function(a, b, c) {
            d();
            try {
                if (i.item = new i(b), "function" == typeof c && c(), g.isTMDetail || g.isTBDetail) {
                    var f, j = [];
                    f = e(".J_TOffSale")[0] || e("#J_Sold-out-recommend")[0] ? {
                        pid: i.item.getID(),
                        p: i.item.getPrice(),
                        m: i.item.getOriPrice(),
                        sale: 0,
                        cco: i.item.getSum(),
                        sco: i.item.getFeedBackCount(),
                        ty: "1"
                    }: {
                        pid: i.item.getID(),
                        p: i.item.getPrice(),
                        m: i.item.getOriPrice(),
                        sale: 1,
                        cco: i.item.getSum(),
                        sco: i.item.getFeedBackCount(),
                        ty: "1"
                    },
                    j.push(f),
                    h.statLog({
                        systemName: "ttk_collect",
                        v: encodeURIComponent(JSON.stringify(j))
                    })
                }
                k && e(this).trigger("tkdebug.info", i.item)
            } catch(l) {
                k && e(this).trigger("tkdebug.error", l),
                l.message.match(/disable/) || l.message.match(/shop/) || h.monitor("message: " + l.message + " img: " + (b && b.src || ""))
            }
        },
        "tknofound.dialog.open": function() {
            e("#" + j.app + "404-same-dialog").fadeIn()
        },
        "tknofound.dialog.remove": function() {
            e("#" + j.app + "404-same-dialog").fadeOut()
        }
    }),
    c.exports = {
        list: a("./event.list").init,
        sms: a("./event.sms").init
    }
}),
__tk__define("views/event.list", ["../lib/jquery", "../lib/underscore", "../utils", "../host", "../utils/tts_stat", "../product", "../models/models", "../models/taobao", "../models/jsonp", "./prefix", "../models/api", "../utils/env", "../models/b2c", "../models/remind", "../models/lds", "../models/juxiao", "../models/tuan", "./render", "./render.list", "./render.sms", "./event.list.qutu", "./event.list.qutu"],
function(a, b) {
    function c(a, b) {
        if (0 === b) return ! 1;
        if ("A" === a.nodeName) {
            var d = a.getAttribute("href");
            return /\&id=|\?id=/.test(d) && (/detail.tmall.com/.test(d) || /item.taobao.com\/item.htm/.test(d)) || /\&itemid=/.test(d) && /guang.taobao.com\/detail\/index.htm/.test(d) || /\&item_id=/.test(d) && /detail.ju.taobao.com\/home.htm/.test(d)
        }
        return c(a.parentElement, b - 1)
    }
    function d(a) {
        var b = a.src || e(a).data("ks-lazyload") || e(a).data("ks-lazyload-custom");
        if (f.isUndefined(b)) return ! 1;
        var d, g = e(a),
        h = f.isElement(g.parents("#" + i.prefix + "media")[0]),
        j = i.host.isMLSList && b.match(/.+_\d{3,}_\d.*\./),
        k = i.host.isMGJList && g.parent().hasClass("img"),
        l = b.match(/^http:\/\/g\.searc.*\.alicdn\.com/),
        m = g.parent().hasClass("prodpic-item"),
        n = g.parents("#J_QuickPanel")[0],
        o = g.parents(".tb-recommend")[0];
        if (d = b.match(/bao\/uploaded|imgextra/), g.width() < 60) return ! 1;
        if (j) return g.width() < 170 ? !1 : !0;
        if (k) return ! 0;
        if (g.hasClass("closeupContentListItemImg")) return ! 0;
        if (i.host.isTBFav && (g.hasClass("img-controller-img") || g.hasClass("controller-img") || g.hasClass("item-img"))) return ! 0;
        if (i.host.isTBList) return "undefined" != typeof g.attr("_placeholder") || "J_PreviewImg0" === g.attr("id") ? !1 : g.hasClass("J_ItemPic") && g.closest(".img-a")[0] ? !1 : "combo_series" === g.closest(".pic").attr("trace") ? !1 : !0;
        if ((i.host.isTBList || i.host.isTMList) && b.match(/.+_.*x.*.jpg|.+_b.jpg|.+_sum.jpg/g)) {
            if (parseInt(b.replace(/.*jpg_/, "").replace(/x.*/, ""), 10) < 70 || m || h || n || o) return ! 1;
            if (d || l) return ! 0
        } else {
            if (b.match(/blank.gif/) || g.width() < 70 || g.height() < 70 || h) return ! 1;
            if (i.host.isYHDList) {
                if (g.closest(".img")[0]) return ! 0;
                if (g.parent().hasClass("product_pic") || g.parent().hasClass("search_prod_img")) return ! 0;
                if (g.parent().hasClass("pro_img_big") || g.parent().hasClass("pro_img")) return ! 0;
                if (g.parents(".pic")[0]) return ! 0
            } else if (i.host.isVjiaList) {
                if (g.parents(".proInfoImg")[0]) return ! 0
            } else {
                if (i.host.isDDList) return /product.dangdang.com/.test(a.parentElement.getAttribute("href"));
                if (i.host.isGMList) return /item.gome.com.cn/.test(a.parentElement.getAttribute("href"));
                if (i.host.isSuningList) {
                    var p = a.parentElement.querySelector("a");
                    if (/product.suning.com/.test(a.parentElement.getAttribute("href"))) return ! 0;
                    if (p) return /product.suning.com/.test(p.getAttribute("href"))
                } else if (i.host.isB2CList) {
                    if (f.isElement(g.parents(".p-img")[0]) || /autorank.jd.com/.test(a.parentElement.getAttribute("href")) || /item.jd.hk\/[0-9]+.html/.test(g.parents("a").attr("href"))) return ! 0
                } else if (i.host.isGMList) {
                    if (g.hasClass("bigImg")) return ! 0;
                    if (g.closest(".pic-wrap")[0] || g.closest(".item-pic")[0]) return ! 0
                } else {
                    if (i.host.isVipList) return g.parents("a") ? /.vip.com\/detail|list.vip.com/.test(g.parents("a").attr("href")) : !1;
                    if (i.host.isAMXList || i.host.isHomeAMX) {
                        if (/(\/dp\/|\/gp\/product)/.test(g.parents("a").attr("href"))) return ! 0
                    } else {
                        if (i.host.isJumeiList) return /item.jumei|jumeiglobal/.test(a.parentElement.getAttribute("href"));
                        if (i.host.isVanclList) {
                            if (g.hasClass("productPhoto")) return ! 0
                        } else if (i.host.isPaipaiList) {
                            if (g.hasClass("photo")) return ! 0
                        } else if (i.host.isYixunList) {
                            if (g.parent().hasClass("link_pic")) return ! 0
                        } else if (i.host.isLeFengList || i.host.isLeFengBrand) {
                            if (g.closest(".pruwrap")[0]) return ! 0
                        } else if (i.host.isKaoLaList) {
                            if (g.closest(".goodswrap")[0]) return ! 0
                        } else if (i.host.isBeiBeiList) {
                            if (g.closest(".view-ItemListItem")[0] || g.closest(".view-ItemList")[0]) return ! 0
                        } else if (i.host.isFengQu) {
                            if (g.closest(".product-1-list")[0] || g.closest(".products2-list-img")[0] || g.closest(".products3-c2")[0]) return ! 0
                        } else {
                            if ((i.host.isTBSub || i.host.isTMSubList) && c(a.parentElement, 3)) return ! 0;
                            if (i.host.isJDSub && /item.jd.(com|hk)\/[0-9]+.html/.test(g.parents("a").attr("href"))) return ! 0;
                            if (i.host.isMia) {
                                if (g.closest(".nfCon")[0] || g.closest(".znkCon")[0] || g.closest(".content")[0]) return ! 0
                            } else if (i.host.isStrawberrynet) {
                                if (g.closest(".product-list")[0]) return ! 0
                            } else {
                                if (!i.host.isYmatou && !i.host.isYmatouList) return ! 1;
                                if (g.closest("#xshop-list") || g.closest(".yht_small") || g.closest(".s_box_p")) return ! 0
                            }
                        }
                    }
                }
            }
        }
    }
    var e = a("../lib/jquery"),
    f = a("../lib/underscore"),
    g = a("../utils"),
    h = a("../utils/tts_stat"),
    i = {},
    j = null,
    k = null,
    l = !1,
    m = !1,
    n = 200;
    window.imgIdArr = [],
    f.extend(i, {
        Product: a("../product"),
        model: a("../models/models"),
        host: a("../host"),
        utils: a("../utils"),
        prefix: a("./prefix").app,
        list: a("./render").list,
        body: e("body"),
        MIN: window.navigator.userAgent.match(/MSIE 6.0/)
    }),
    i.host.isTBFav && (n = 500),
    b.init = function() {
        var b = f.once(function() {
            var a = e("#" + i.prefix + "con");
            a.on("mouseenter",
            function() {
                l = !0
            }).on("mouseleave",
            function() {
                l = !1
            })
        });
        i.body.on({
            "tklist.global.init": function() {
                var a = null,
                b = [],
                c = e("#" + i.prefix + "media");
                e("img:visible").each(function(f, g) {
                    var h = e(g);
                    if (d(g)) {
                        var l;
                        if (l = new i.Product(this), (i.host.isTBList || i.host.isTMList) && !h.data("cqol")) {
                            var m = new i.Product(this);
                            if ("" === m.getID()) return;
                            b.push(m.getID()),
                            h.data("cqol", "true")
                        }
                        h.data("tk") || (h.data("tk", "true").on("mouseenter",
                        function() {
                            var b = this;
                            "" !== l.getID() && "" !== l.getPrice() && (k && clearTimeout(k), a && clearTimeout(a), j && clearTimeout(j), e("#" + i.prefix + "con")[0] && i.body.trigger("tklist.global.remove", [c]), a = setTimeout(function() {
                                i.body.trigger("tklist.global.show", [e(b)])
                            },
                            n))
                        }), h.on("mouseleave",
                        function() {
                            a && clearTimeout(a)
                        }))
                    }
                }),
                f.isElement(c[0]) === !1 && (i.list.render(), c = e("#" + i.prefix + "media"), c.on("mouseleave",
                function() {
                    g.stat("tool_curve_PV", !0),
                    h.trackLog("tool_curve_PV");
                    var b = this;
                    k && clearTimeout(k),
                    l = !1,
                    k = setTimeout(function() {
                        l || (a && clearTimeout(a), j && clearTimeout(j), i.body.trigger("tklist.global.remove", [e(b)]))
                    },
                    300)
                }), e("#" + i.prefix + "source-product").on("click",
                function() {
                    i.body.trigger("tkstat.source.productclick", [this])
                }), e("#" + i.prefix + "close").on("click",
                function() {
                    i.body.trigger("tklist.global.remove"),
                    i.body.trigger("tkstat.global.remove")
                }), e("#" + i.prefix + "button").on("click",
                function() {
                    i.body.trigger("tkstat.global.button")
                }))
            },
            "tklist.global.show": function(c, d, h) {
                function j(b, c) {
                    i.body.trigger("tk.global.init", [b[0]]),
                    i.list.update(),
                    i.body.trigger("tkstat.global.hover");
                    var d, e = {
                        id: i.Product.item.getID(),
                        title: i.Product.item.getTitle(),
                        href: i.Product.item.getHref(),
                        img: i.Product.item.getImg()
                    };
                    d = i.host.isTBList || i.host.isTMList || i.host.isTMSubList || i.host.isTBSub ? i.utils.getRecomPage(e) + "&utm_source=" + i.utils.site() + "_btn&price=" + i.Product.item.getPrice() + "&sales=" + i.Product.item.getSum() : i.utils.getUndertakePage(e) + "&utm_source=" + i.utils.site() + "_btn&price=" + i.Product.item.getPrice() + "&sales=" + i.Product.item.getSum(),
                    i.utils.isManualDId && (d += "&isauto=1"),
                    l.show(),
                    a("./event.list.qutu").init(e.id, !0),
                    l.one("mouseover", c),
                    l.one("mouseover",
                    function() {
                        g.stat("tool_curvebutton_PV", !0),
                        a("./event.list.qutu").init(e.id, !1)
                    })
                }
                function k(a, c) {
                    function d(a, b) {
                        var c = e("html").width() / 2.5 < i.Product.item.box.offset().left;
                        if (a.parent().removeClass(i.prefix + "right"), a.removeClass(i.prefix + "loading"), c && a.parent().addClass(i.prefix + "right"), f.isUndefined(b) === !1 && i.body.trigger("tkstat.global.tag", b), b) {
                            var d, g = {
                                id: i.Product.item.getID(),
                                title: i.Product.item.getTitle(),
                                href: i.Product.item.getHref(),
                                img: i.Product.item.getImg()
                            };
                            d = i.host.isTBList || i.host.isTMList ? i.utils.getRecomPage(g) + "&utm_source=" + i.utils.site() + "_btn&price=" + i.Product.item.getPrice() + "&sales=" + i.Product.item.getSum() : i.utils.getUndertakePage(g) + "&utm_source=" + i.utils.site() + "_btn&price=" + i.Product.item.getPrice() + "&sales=" + i.Product.item.getSum(),
                            i.utils.isManualDId && (d += "&isauto=1"),
                            l.show()
                        }
                        k.show()
                    }
                    function h(a) {
                        var b = "1",
                        d = 0 === a.sameList.length && 0 === a.similarList.length;
                        d && (b = "3"),
                        e("#" + i.prefix + "list .J_alink").on("click",
                        function() {
                            "auto" === c ? i.body.trigger("tkstat.global.product", [a, e(this), void 0, "image", b]) : i.body.trigger("tkstat.global.product", [a, e(this), void 0, void 0, b])
                        }),
                        e("#" + i.prefix + "list .J_comlink").on("click",
                        function() {
                            "auto" === c ? i.body.trigger("tkstat.global.product", [a, e(this), void 0, "imageCom", b]) : i.body.trigger("tkstat.global.product", [a, e(this), void 0, "com", b])
                        }),
                        e("." + i.prefix + "item-tags").on("click",
                        function() {
                            "auto" === c ? i.body.trigger("tkstat.global.product", [a, e(this), void 0, "image", b]) : i.body.trigger("tkstat.global.product", [a, e(this), void 0, void 0, b])
                        })
                    }
                    function j(a) {
                        g.kLog({
                            systemName: "bottom-show",
                            pos: a,
                            url: location.href,
                            ref: encodeURIComponent(document.referrer)
                        });
                        var b;
                        e(".TK-ul-list li").on("click",
                        function() {
                            b = e(this).find("a").attr("href").match(/showkc/) ? 1 : e(this).find("a").attr("href").match(/show\-3/) ? 2 : e(this).find("a").attr("href").match(/website\=(taobao|tmall)/) ? 3 : 4,
                            g.kLog({
                                systemName: "bottom-click",
                                pos: a,
                                type: b,
                                ref: encodeURIComponent(document.referrer)
                            })
                        }),
                        e(".TK-ul-biaolei-list li").on("click",
                        function() {
                            b = e(this).find("a").attr("href").match(/showkc/) ? 1 : e(this).find("a").attr("href").match(/show\-3/) ? 2 : e(this).find("a").attr("href").match(/website\=(taobao|tmall)/) ? 3 : 4,
                            g.kLog({
                                systemName: "bottom-click",
                                pos: a,
                                type: b,
                                ref: encodeURIComponent(document.referrer)
                            })
                        })
                    }
                    var k = e("#" + i.prefix + "con");
                    if (b(), i.list.renderBox(), d(k), m) return ! 1;
                    i.body.one({
                        "tk.sync.success": function(a, b) {
                            e.proxy(i.list.render, i.list),
                            i.list.render(a, b, c),
                            setTimeout(function() {
                                j(3)
                            },
                            500),
                            d(k, b),
                            e("#" + i.prefix + "logo").one("click",
                            function() {
                                i.body.trigger("tkstat.global.logo")
                            }),
                            e("#" + i.prefix + "move").one("click",
                            function() {
                                i.body.trigger("tkstat.global.more")
                            }),
                            h(b)
                        },
                        "tk.sync.fail": function(a, b) {
                            i.list.fail(b),
                            d(k)
                        },
                        "tk.sync.promoprice": function(a, b) {
                            i.list.render(a, b, "promoprice"),
                            h(b)
                        }
                    });
                    var n = {
                        type: "all",
                        positionInfo: "list"
                    };
                    i.model.fetch(n),
                    m = !0,
                    f.isString(c) && "auto" === c ? i.body.trigger("tkstat.global.focus", "auto") : i.body.trigger("tkstat.global.focus", "button")
                }
                var l = e("#" + i.prefix + "button");
                "auto" === h ? e("#" + i.prefix + "button").trigger("mouseenter", [h]) : j(d, k)
            },
            "tklist.global.remove": function() {
                var a = e("#" + i.prefix + "media"),
                b = e("#" + i.prefix + "con");
                j && clearTimeout(j),
                e("#" + i.prefix + "button").hide(),
                a.css("visibility", "hidden"),
                b.removeClass(i.prefix + "loading").hide(),
                m = !1,
                i.list.render()
            }
        })
    }
}),
__tk__define("views/event.list.qutu", ["../lib/jquery", "../lib/underscore", "../host", "../utils", "../product", "../utils/tts_stat", "../templates.jst"],
function(a, b, c) {
    function d(a) {
        return 10 > a && (a = "0" + a.toString()),
        a
    }
    function e(a) {
        return Math.max.apply({},
        a)
    }
    function f(a) {
        return Math.min.apply({},
        a)
    }
    function g(a, b) {
        var c = a;
        return a = a.toString(),
        a.match(/\./) || (c = 0 === a ? 0 : b ? a / 100 : a / 100),
        c
    }
    function h(a, b, c, d) {
        if (a) {
            this.price = m.item.getPrice(),
            "" !== m.item.getPrice() && (this.price = parseInt(m.item.getPrice(), 10)),
            this.wrap = c;
            var g = [],
            h = {
                price: this.price,
                time: a.currentDate
            };
            a && a.priceHistoryList && (g = a.priceHistoryList, g.push(h)),
            this.nPrice = this.price,
            this.nDay = new Date(a.currentDate).getTime();
            var k = {
                beginXY: 5,
                ySetpPx: 35,
                xSetpPx: 54
            };
            this.color = "#ff3b30";
            var l = !1;
            this.wending = !1,
            this.tag = l,
            this.fixs = j.extend({},
            k, b),
            this.warpNum = 6,
            this.priceAndDate = g;
            var n = this.getPriceAndDate(g);
            g[0] || (l = !1, this.priceAndDate = [{
                price: this.nPrice,
                time: (new Date).getTime()
            }], n = {
                date: [(new Date).getTime()],
                price: [this.nPrice],
                parseData: [{
                    price: this.nPrice,
                    time: (new Date).getTime()
                }]
            },
            this.wending = !0),
            this.price = n.price,
            this.max = e(this.price),
            this.min = f(this.price),
            1 === this.price.length && this.price[0] === this.nPrice && (this.wending = !0),
            this.avg = this.getAvg(this.price),
            this.lengthSecPrice = this.price[this.price.length - 1],
            this.price[this.price.length - 2] && (this.lengthThridPrice = this.price[this.price.length - 2]),
            this.date = n.date,
            "" !== this.nPrice && (this.price.push(this.nPrice), this.date.push(this.nDay)),
            this.btn = this.wrap.siblings(".TK-mind-sub-nav").find(".TK-mind-sub-qutu"),
            i ? this.initBtn(this.btn, l) : (this.two_month = !0, this.initBtn(this.btn, l), (this.max !== this.nPrice || this.min !== this.nPrice) && (this.wending = !1), this.ySetp = this.pareSetp(this.min, this.max), 2 === this.warpNum && (this.yAxisClass = "2", this.fixs.ySetpPx = 105), (l || this.wending) && (this.warpNum = 2, this.yAxisClass = "3", this.fixs.ySetpPx = 105), this.downYAxi = this.parseDownYAxi(this.min, this.ySetp, this.wending), this.yAxis = this.getYaxisData(this.ySetp, this.warpNum, this.wending), this.xAxis = this.getXaerx(), this.upYAxi = this.yAxis[0], this.matchY = this.fixs.ySetpPx / this.ySetp, this.matchX = this.fixs.xSetpPx / 20 * 1.3, this.drawCanvasBase(this.color, this.wending), this.drawCanvasLayout(this.color, this.wending), this.drawXaxi(), this.clickevent())
        }
    }
    var i, j = a("../lib/jquery"),
    k = (a("../lib/underscore"), a("../host")),
    l = a("../utils"),
    m = a("../product"),
    n = (a("../utils/tts_stat"), a("../templates.jst"));
    j("body");
    h.prototype = {
        getBtnClass: function(a, b) {
            var c = "TK-icon-sub-null";
            j(".J-TK-mind-sub-icon-text");
            if (b) c = "bijia-TTS_list_pw",
            j(".TK-prudct-zousi span").html("掌柜很实在，还不买买买！"),
            this.logo("bijia-TTS_logo_pw");
            else {
                var d, e = this.refLoop(this.nPrice, this.priceAndDate);
                d = this.priceAndDate[e + 1] ? new Date(this.priceAndDate[e + 1].time).getTime() : new Date(this.priceAndDate[e].time).getTime(),
                this.nDay - d < 2592e6 && (this.lengthSecPrice = this.priceAndDate[e].price),
                this.priceAndDate[e].price === this.nPrice ? (c = "bijia-TTS_list_pw", j(".TK-prudct-zousi span").html("掌柜很实在，还不买买买！"), this.logo("bijia-TTS_logo_pw"), this.wending = !0) : this.nPrice <= this.min ? (c = "bijia-TTS_list_di", j(".TK-prudct-zousi span").html("OMG，此时不买更待何时！"), this.logo("bijia-TTS_logo_di")) : this.lengthSecPrice > this.nPrice ? (c = "bijia-TTS_list_down", j(".TK-prudct-zousi span").html("对的时间遇到对的价格，缘分"), this.logo("bijia-TTS_logo_down")) : this.lengthSecPrice < this.nPrice ? (c = "bijia-TTS_list_up", j(".TK-prudct-zousi span").html("该任性时就任性，喜欢就剁手"), this.logo("bijia-TTS_logo_up")) : (c = "bijia-TTS_list_pw", j(".TK-prudct-zousi span").html("掌柜很实在，还不买买买！"), this.logo("bijia-TTS_logo_pw"), this.wending = !0)
            }
            j(".TK-prudct-zousi i").addClass(c)
        },
        logo: function(a) {
            j("#TK-button").removeClass("bijia-TTS_logo_xiangsi"),
            j("#TK-button").removeClass("bijia-TTS_logo_pw"),
            j("#TK-button").removeClass("bijia-TTS_logo_di"),
            j("#TK-button").removeClass("bijia-TTS_logo_up"),
            j("#TK-button").removeClass("bijia-TTS_logo_down"),
            j("#TK-button").addClass(a)
        },
        initBtn: function(a, b) {
            this.msgBox = this.wrap.find(".TK-qutu-sub-msg"),
            this.getBtnClass(a, b)
        },
        getAvg: function(a) {
            for (var b = a.length,
            c = 0,
            d = 0; b > d; d++) c += a[d];
            return c / b
        },
        getYdata: function() {
            for (var a, b, c, d, e, f, h, i, j, k, l, m, n = this,
            o = [], p = [], q = !0, r = !0, s = 0; s < this.price.length; s++) d = parseFloat(this.date[s] / 864e5),
            a = parseFloat((this.upYAxi - this.price[s]) * this.matchY) + (this.fixs.beginXY - 2),
            b = parseFloat((d - this.minDay) * this.matchX),
            c = this.price[s],
            n.tag || s < this.price.length - 1 && (o.push(2 * a), p.push(g(c, !0))),
            o.push(2 * a),
            s === this.price.length - 1 && (m = b, h = a),
            c === this.min ? (l = s + 1, k = this.price[l], k !== this.min && r && (e = a, j = b, 10 > j && (j = parseFloat((parseFloat(this.date[l] / 864e5) - this.minDay) * this.matchX) - 4), r = !1)) : c === this.max && (l = s + 1, k = this.price[l], k !== this.max && q && (f = a, i = b, 10 > i && (i = parseFloat((parseFloat(this.date[l] / 864e5) - this.minDay) * this.matchX) - 4), q = !1)),
            p.push(g(c, !0));
            if (!n.tag) {
                var t = o.length;
                o.push(o[t - 1])
            }
            var u, v;
            return u = m === j ? !0 : !1,
            v = f <= this.fixs.beginXY ? !0 : !1,
            {
                Ypx: o,
                Yprice: p,
                isinX: u,
                isinY: v,
                nowY: h,
                minY: e,
                maxY: f,
                minX: j / this.bili + 6,
                maxX: i / this.bili + 6
            }
        },
        getXdata: function() {
            for (var a, b, c, e, f, g = [], h = [], i = this, j = 0; j < this.date.length; j++) e = parseFloat(this.date[j] / 864e5),
            a = parseFloat((e - this.minDay) * this.matchX),
            c = new Date(this.date[j]),
            b = c.getFullYear() + "/" + d(c.getMonth() + 1) + "/" + d(c.getDate()),
            i.tag || j > 0 && (g.push(2 * (a + this.fixs.beginXY - 8) / this.bili + 12), h.push(b)),
            g.push(2 * a / this.bili + 12),
            this.price[j] === this.min && (f = a + this.fixs.beginXY),
            h.push(b);
            if (!i.tag) {
                var k = g.length;
                g.push(g[k - 1] + 6)
            }
            return {
                Xpx: g,
                Xdate: h,
                minX: f
            }
        },
        pareSetp: function(a, b, c) {
            var d, e = this,
            f = b - a,
            g = 100;
            d = "floor" === c ? Math.floor(f / 3 / g) * g: "ceil" === c ? Math.ceil(f / 3 / g) * g: Math.round(f / 3 / g) * g,
            0 === d && (d = 100);
            var h = function(a) {
                for (var b = "1",
                c = 1; a > c; c++) b += "0";
                return parseInt(b, 10) / 10
            },
            i = d.toString().length,
            j = d / h(i);
            return g = Math.round(j) * h(i),
            0 === f ? g = 100 : 100 > f && (g = 50, e.warpNum = 2),
            g
        },
        parseDownYAxi: function(a, b, c) {
            return a = Math.floor(a / b) * b
        },
        nextUniq: function(a) {
            for (var b, c, d = a,
            e = [], f = 0, g = d.length; g > f; f++) b = d[f],
            c = d[f + 1],
            "undefined" != typeof c ? (new Date(b.time).getMonth() + 1 !== new Date(c.time).getMonth() + 1 || new Date(b.time).getDate() !== new Date(c.time).getDate()) && e.push(d[f]) : e.push(d[f]);
            return e
        },
        getPriceAndDate: function(a) {
            var b, c = this.nextUniq(a),
            d = [],
            e = [],
            f = [];
            if (c[0]) for (var g = 0; g < c.length; g++) b = {
                price: c[g].price,
                time: new Date(c[g].time).getTime()
            },
            d.push(b.price),
            e.push(b.time),
            f.push(b);
            else d = [this.nPrice],
            e = [(new Date).getTime() - 50112e5],
            f = [];
            return {
                price: d,
                date: e,
                parseData: f
            }
        },
        getYaxisData: function(a, b, c) {
            var d = [],
            e = a,
            f = this.downYAxi;
            2 !== this.warpNum || this.tag || (e = 100),
            2 !== this.warpNum || c || (this.max - e >= f || this.min <= f) && (f = this.min <= f ? this.downYAxi - 100 : this.downYAxi, this.warpNum = 3, this.fixs.ySetpPx = 53, d = [], this.yAxisClass = "3"),
            6 === this.warpNum && f + 5 * e - this.max <= .5 * e ? (e = 1.5 * e, e > 100 && (e = 100 * Math.ceil(e / 100)), this.ySetp = e) : 3 === this.warpNum && f + 2 * e - this.max <= .2 * e ? (e = 1.2 * e, e > 100 && (e = 100 * Math.ceil(e / 100)), this.ySetp = 100) : 2 === this.warpNum && f + e - this.max <= .1 * e && (e = 1.1 * e, e > 100 && (e = 100 * Math.ceil(e / 100)), this.ySetp = 200);
            for (var g = 0; g < this.warpNum; g++) d.unshift(f),
            f += e;
            return d
        },
        getXaerx: function() {
            this.startDate = new Date(this.date[0]).getTime(),
            this.bili = ((new Date).getTime() - this.startDate) / 5184e6;
            var a = (new Date).getTime() - 7776e5,
            b = this.startDate,
            c = 864e6 * this.bili;
            this.minDay = Math.round(b / 864e5);
            var e, f, g = [],
            h = {
                0 : "1",
                1 : "2",
                2 : "3",
                3 : "4",
                4 : "5",
                5 : "6",
                6 : "7",
                7 : "8",
                8 : "9",
                9 : "10",
                10 : "11",
                11 : "12"
            };
            c = c / 7 * 6;
            var i = 7;
            this.tag && (b = a - 5184e6, c = 864e6, this.minDay = Math.round(b / 864e5), this.bili = 1, i = 6),
            44064e5 > a - b && (b = a - 44064e5, c = 864e6 / 7 * 6, this.minDay = Math.round(b / 864e5), this.bili = 1, i = 7, this.two_month = !1);
            for (var j = 0; i > j; j++) b += c,
            e = new Date(b),
            f = d(h[e.getMonth()]) + "/" + d(e.getDate()),
            (0 === j || 3 === j || 5 === j) && g.push(f);
            return g
        },
        dashedLineTo: function(a, b, c, d, e, f) {
            "undefined" == typeof f && (f = 5);
            var g = d - b,
            h = e - c,
            i = Math.floor(Math.sqrt(g * g + h * h)),
            j = 0 >= f ? i: i / f,
            k = h / i * f,
            l = g / i * f;
            a.beginPath();
            for (var m = 0; j > m; m++) m % 2 ? a.lineTo(b + m * l, c + m * k) : a.moveTo(b + m * l, c + m * k);
            a.stroke()
        },
        getObjXY: function() {
            for (var a, b = this.getYdata().Ypx, c = this.getXdata().Xpx, d = this.getYdata().Yprice, e = this.getXdata().Xdate, f = [], g = 0; g < c.length; g++) a = {
                x: c[g],
                y: b[g],
                p: d[g],
                d: e[g]
            },
            f.push(a);
            return f
        },
        drawCanvasBase: function(a, b) {
            var c = this.wrap.find(".TK-canvas-sub-base")[0],
            d = this.fixs.beginXY,
            e = 1.65 * (210 + d),
            f = 380,
            h = this.warpNum,
            i = this.fixs.ySetpPx;
            if (3 === this.warpNum && (h = 4), b && (h = 2, i = 105), c.getContext) {
                var j = c.getContext("2d");
                j.lineWidth = 3,
                j.strokeStyle = "#d0d0d0",
                j.beginPath(),
                j.moveTo(d + 6, h * i * 1.2 + d),
                j.lineTo(f + 65, h * i * 1.2 + d),
                j.stroke(),
                j.beginPath(),
                j.moveTo(d + 5, d),
                j.lineTo(d + 5, e - 98),
                j.stroke(),
                j.save();
                var k, l = this.getYdata().Ypx,
                m = this.getXdata().Xpx;
                if (this.tag) {
                    m[0] = 118;
                    for (var n = 0; n < l.length; n++) j.beginPath(),
                    j.arc(m[n], .85 * l[n], 5, 0, 2 * Math.PI, !1),
                    n === l.length - 1 ? j.fillStyle = "#23a839": j.fillStyle = "#ff3b30",
                    j.fill();
                    j.strokeStyle = "#ff3b30",
                    this.dashedLineTo(j, m[0], .85 * l[0], m[1], .85 * l[1], 3),
                    j.font = "21px Arial",
                    j.fillStyle = "#999999",
                    this.max >= 1e5 ? j.fillText("¥" + g(this.max, !0), 440, 2 * (this.getYdata().nowY - 10)) : j.fillText("¥" + g(this.max, !0).toFixed(2), 390, 2 * (this.getYdata().nowY - 10))
                } else if (b) {
                    for (k = 0; k < l.length; k++) j.beginPath(),
                    j.arc(m[k], .6 * l[k], .5, 0, 2 * Math.PI, !1),
                    j.fillStyle = "#ff3b30",
                    j.fill(),
                    j.lineWidth = 3,
                    j.strokeStyle = "#ff3b30",
                    j.beginPath(),
                    j.moveTo(m[k], .6 * l[k]),
                    j.lineTo(m[k + 1], .6 * l[k + 1]),
                    j.stroke();
                    this.two_month || this.dashedLineTo(j, 12, .6 * l[0], m[0], .6 * l[0], 3),
                    j.strokeStyle = "#ff3b30",
                    j.font = "21px Arial",
                    j.fillStyle = "#999999",
                    this.max >= 1e5 ? j.fillText("¥" + g(this.max, !0), 445, 2 * (this.getYdata().nowY + 6) * .6) : j.fillText("¥" + g(this.max, !0).toFixed(2), 445, 2 * (this.getYdata().nowY + 6) * .6)
                } else {
                    for (k = 0; k < l.length; k++) j.beginPath(),
                    j.arc(m[k], .6 * l[k], .5, 0, 2 * Math.PI, !1),
                    j.fillStyle = "#ff3b30",
                    j.fill(),
                    j.lineWidth = 3,
                    j.strokeStyle = "#ff3b30",
                    j.beginPath(),
                    j.moveTo(m[k], .6 * l[k]),
                    j.lineTo(m[k + 1], .6 * l[k + 1]),
                    j.stroke();
                    this.two_month || this.dashedLineTo(j, 12, .6 * l[0], m[0], .6 * l[0], 3),
                    this.getYdata().isinY ? j.fillStyle = "#ff3b30": this.getYdata().isinX ? j.fillStyle = "#23a839": j.fillStyle = "#999999",
                    j.font = "21px tahoma",
                    this.nPrice >= 1e5 ? j.fillText("¥" + g(this.nPrice, !0), 445, 2 * (this.getYdata().nowY + 6) * .6) : j.fillText("¥" + g(this.nPrice, !0).toFixed(2), 445, 2 * (this.getYdata().nowY + 6) * .6),
                    j.font = "22px tahoma",
                    j.fillStyle = "#23a839",
                    this.getYdata().isinX || j.fillText("¥" + g(this.min, !0).toFixed(2), 2 * (this.getYdata().minX - 4), 2 * (this.getYdata().minY + 24) * .6),
                    this.position_Max_Min(j, 2 * this.getYdata().minX, 2 * this.getYdata().minY * .6, "#23a839"),
                    j.font = "22px tahoma",
                    j.fillStyle = "#ff3b30",
                    this.getYdata().isinY || j.fillText("¥" + g(this.max, !0).toFixed(2), 2 * (this.getYdata().maxX - 4), 2 * (this.getYdata().maxY - 12) * .6),
                    this.position_Max_Min(j, 2 * this.getYdata().maxX, 2 * this.getYdata().maxY * .6, "#ff3b30"),
                    j.globalCompositeOperation = "source-atop"
                }
            }
        },
        position_Max_Min: function(a, b, c, d) {
            a.beginPath(),
            a.moveTo(b, c),
            a.arc(b, c, 9, 0, 2 * Math.PI, !1),
            a.closePath(),
            a.fillStyle = d,
            a.fill(),
            a.beginPath(),
            a.moveTo(b, c),
            a.arc(b, c, 6, 0, 2 * Math.PI, !1),
            a.closePath(),
            a.fillStyle = "#fff",
            a.fill(),
            a.beginPath(),
            a.moveTo(b, c),
            a.arc(b, c, 4, 0, 2 * Math.PI, !1),
            a.closePath(),
            a.fillStyle = d,
            a.fill()
        },
        drawCanvasLayout: function(a) {
            var b = this,
            c = this.wrap.find(".TK-canvas-sub-layout")[0];
            if (c.getContext) {
                var d, e, f = c.getContext("2d"),
                g = function() {
                    var a = b.getObjXY();
                    j(c).on("mousemove",
                    function(g) {
                        d = g.pageX || g.clientX || 0,
                        e = g.pageY || g.clientY || 0,
                        d -= j(c).offset().left,
                        e -= j(c).offset().top,
                        f.clearRect(0, 0, c.width, c.height),
                        b.msgBox.hide(),
                        j(a).each(function(c, e) {
                            d >= e.x / 2 - 2 && a[c + 1] && d <= a[c + 1].x / 2 - 2 && (b.msgBox.css({
                                left: d - 48,
                                top: .6 * (e.y / 2 - 8),
                                zIndex: 1e4
                            }).show(), b.msgBox.html('<div class="TK-qutu-sub-msg-wrap"><p class="TK-msg-date">' + b.pxTodata(d) + '</p><p class="TK-msg-price"><span>&yen ' + e.p + "</span></p></div>"), b.wending ? (f.beginPath(), f.arc(2 * d, .6 * e.y, 6, 0, 2 * Math.PI, !1), f.fillStyle = "#ff3b30", f.fill()) : (f.beginPath(), f.arc(2 * d, .6 * e.y, 6, 0, 2 * Math.PI, !1), f.fillStyle = "#ff3b30", f.fill()))
                        })
                    })
                };
                g()
            }
        },
        pxTodata: function(a) {
            var b, c = 864e5 * ((a - 6) / this.matchX * this.bili + this.minDay),
            e = {
                0 : "1",
                1 : "2",
                2 : "3",
                3 : "4",
                4 : "5",
                5 : "6",
                6 : "7",
                7 : "8",
                8 : "9",
                9 : "10",
                10 : "11",
                11 : "12"
            },
            f = new Date(c);
            return b = f.getFullYear() + "/" + d(e[f.getMonth()]) + "/" + d(f.getDate())
        },
        drawYaxi: function() {
            for (var a = this.yAxis,
            b = "",
            c = 0; c < a.length; c++) b += '<span class="TK-qutu-sub-price-item TK-qutu-sub-price-item-' + this.yAxisClass + '">',
            b += "" === g(a[c]) ? 0 : g(a[c]),
            b += "</span>";
            j(".TK-qutu-sub-price").html(b)
        },
        drawXaxi: function() {
            var a = this.xAxis,
            b = "";
            j.each(a,
            function(a, c) {
                b += '<span class="TK-qutu-sub-data-item">' + c + "</span>"
            }),
            j(".TK-qutu-sub-data").html(b)
        },
        refLoop: function(a, b) {
            for (var c = b.length; c--;) if (Math.abs(b[c].price - a) > 10) return c;
            return b.length - 1
        },
        clickevent: function() {
            this.wrap.parents(".list_qutu").on("click",
            function() {
                j(this).toggleClass("TK-not-show-qutu"),
                j(this).toggleClass("TK-show-qutu"),
                j(".TK-ul-list").toggleClass("TK-show"),
                j(".TK-ul-biaolei-list").toggleClass("TK-biaolei-show")
            })
        }
    },
    c.exports = {
        init: function(a, b) {
            i = b;
            var c = l.getConfig();
            if (!window[a] && c.taobao.model.qutu) window[a] = !0,
            j.getJSON("//www.gmf.com/priceHistory.php?itemId=" + m.item.getID() + "&website=" + k.webSite + "&price=" + m.item.getPrice() + "&callback=?",
            function(b) {
                var c = n["bijia/list.qutu"];
                j(".TTS-qutu-wrap").html(""),
                j(".TTS-qutu-wrap").append(c({
                    list: "cc"
                })),
                new h(b, {},
                j(".TK-qutu-sub-warp"), a),
                window["data" + a] = b
            });
            else {
                var d = n["bijia/list.qutu"];
                j(".TTS-qutu-wrap").html(""),
                j(".TTS-qutu-wrap").append(d({
                    list: "cc"
                })),
                new h(window["data" + a], {},
                j(".TK-qutu-sub-warp"), a)
            }
        }
    }
}),
__tk__define("views/event.sms", ["../lib/jquery", "../lib/underscore", "../product", "../utils", "../host", "../models/models", "../models/taobao", "../models/jsonp", "./prefix", "../models/api", "../utils/env", "../models/b2c", "../models/remind", "../models/lds", "../models/juxiao", "../models/tuan", "./render", "./render.list", "./render.sms"],
function(a, b) {
    function c(a) {
        var b = a.src || d(a).data("ks-lazyload") || d(a).data("ks-lazyload-custom");
        if (e.isUndefined(b)) return ! 1;
        var c = d(a),
        g = e.isElement(c.parents("#" + f.prefix + "media")[0]),
        h = b.match(/.+_\d{3,}_\d.*\./),
        i = b.match(/.+_225x999.jpg/);
        return h ? c.width() < 170 ? !1 : !0 : i ? !0 : b.match(/.+_.*x.*.jpg|.+_b.jpg|.+_sum.jpg/g) ? parseInt(b.replace(/.*jpg_/, "").replace(/x.*/, ""), 10) < 70 || c.width() < 70 || c.height() < 70 || g ? !1 : void 0 : !1
    }
    var d = a("../lib/jquery"),
    e = a("../lib/underscore"),
    f = {},
    g = null,
    h = !1;
    window.imgIdArr = [],
    e.extend(f, {
        Product: a("../product"),
        model: a("../models/models"),
        host: a("../host"),
        utils: a("../utils"),
        prefix: a("./prefix").app,
        list: a("./render").sms,
        body: d("body"),
        MIN: window.navigator.userAgent.match(/MSIE 6.0/)
    }),
    b.init = function() {
        f.body.on({
            "tklist.global.init": function() {
                var a = null,
                b = 2e3,
                h = d("#" + f.prefix + "media");
                d("img:visible").each(function(e, h) {
                    var i = d(h);
                    c(h) && (i.data("tk") || (i.data("tk", "true").on("mouseenter",
                    function() {
                        d("#" + f.prefix + "con")[0] && d("#" + f.prefix + "con").hide();
                        var c = this;
                        a && clearTimeout(a),
                        g && clearTimeout(g),
                        a = setTimeout(function() {
                            f.body.trigger("tklist.global.show", [d(c)])
                        },
                        100),
                        g = setTimeout(function() {
                            f.body.trigger("tklist.global.show", [d(c), "auto"])
                        },
                        b)
                    }), i.on("mouseleave",
                    function() {
                        a && clearTimeout(a)
                    })))
                }),
                e.isElement(h[0]) === !1 && (f.list.render(), h = d("#" + f.prefix + "media"), h.on("mouseleave",
                function() {
                    a && clearTimeout(a),
                    g && clearTimeout(g),
                    f.body.trigger("tklist.global.remove", [d(this)])
                }), d("#" + f.prefix + "source-product").on("click",
                function() {
                    f.body.trigger("tkstat.source.productclick", [this])
                }), d("#" + f.prefix + "close").on("click",
                function() {
                    f.body.trigger("tklist.global.remove"),
                    f.body.trigger("tkstat.global.remove")
                }), d("#" + f.prefix + "button").on("click",
                function() {
                    f.body.trigger("tkstat.global.button")
                }))
            },
            "tklist.global.show": function(a, b, c) {
                function g(a, b) {
                    f.body.trigger("tk.global.init", [a[0]]),
                    f.list.update(),
                    f.body.trigger("tkstat.global.hover"),
                    j.attr("href", f.utils.getUndertakePage(f.Product.item.getID(), f.Product.item.getTitle())).show(),
                    j.one("mouseover", b)
                }
                function i(a, b) {
                    function c(a, b) {
                        var c = d("html").width() / 1.7 < f.Product.item.box.offset().left;
                        if (a.parent().removeClass(f.prefix + "right"), a.removeClass(f.prefix + "loading"), c && a.parent().addClass(f.prefix + "right"), e.isUndefined(b) === !1 && f.body.trigger("tkstat.global.tag", b), b) {
                            var g = "";
                            b.isTtsCategory && (g += "&cid=" + b.cid, "undefined" != typeof b.sex && (g += "&sex=" + b.sex)),
                            j.attr("href", f.utils.getUndertakePage(b.itemId, f.Product.item.getTitle()) + g).show()
                        }
                        i.show()
                    }
                    function g(a) {
                        var c = "1",
                        e = 0 === a.sameList.length && 0 === a.similarList.length;
                        e && (c = "3"),
                        d("#" + f.prefix + "list .J_alink").on("click",
                        function() {
                            "auto" === b ? f.body.trigger("tkstat.global.product", [a, d(this), void 0, "image", c]) : f.body.trigger("tkstat.global.product", [a, d(this), void 0, void 0, c])
                        }),
                        d("#" + f.prefix + "list .J_comlink").on("click",
                        function() {
                            "auto" === b ? f.body.trigger("tkstat.global.product", [a, d(this), void 0, "imageCom", c]) : f.body.trigger("tkstat.global.product", [a, d(this), void 0, "com", c])
                        }),
                        d("." + f.prefix + "item-tags").on("click",
                        function() {
                            "auto" === b ? f.body.trigger("tkstat.global.product", [a, d(this), void 0, "image", c]) : f.body.trigger("tkstat.global.product", [a, d(this), void 0, void 0, c])
                        })
                    }
                    var i = d("#" + f.prefix + "con");
                    if (f.list.renderBox(), c(i), h) return ! 1;
                    f.body.one({
                        "tk.sync.success": function(a, e) {
                            d.proxy(f.list.render, f.list),
                            f.list.render(a, e, b),
                            c(i, e),
                            d("#" + f.prefix + "logo").one("click",
                            function() {
                                f.body.trigger("tkstat.global.logo")
                            }),
                            d("#" + f.prefix + "move").one("click",
                            function() {
                                f.body.trigger("tkstat.global.more")
                            }),
                            g(e)
                        },
                        "tk.sync.fail": function(a, b) {
                            f.list.fail(b),
                            c(i)
                        },
                        "tk.sync.promoprice": function(a, b) {
                            f.list.render(a, b, "promoprice"),
                            g(b)
                        }
                    });
                    var k = {};
                    f.model.fetch(k),
                    h = !0,
                    e.isString(b) && "auto" === b ? f.body.trigger("tkstat.global.focus", "auto") : f.body.trigger("tkstat.global.focus", "button")
                }
                var j = d("#" + f.prefix + "button");
                "auto" === c ? d("#" + f.prefix + "button").trigger("mouseenter", [c]) : g(b, i)
            },
            "tklist.global.remove": function() {
                var a = d("#" + f.prefix + "media"),
                b = d("#" + f.prefix + "con");
                g && clearTimeout(g),
                d("#" + f.prefix + "button").hide(),
                a.css("visibility", "hidden"),
                b.removeClass(f.prefix + "loading").hide(),
                h = !1,
                f.list.render()
            }
        })
    }
}),
__tk__define("views/juxiao", ["../lib/jquery", "../templates.jst", "../utils", "../host", "../models/models", "../models/taobao", "../models/jsonp", "./prefix", "../lib/underscore", "../models/api", "../product", "../utils/env", "../models/b2c", "../models/remind", "../models/lds", "../models/juxiao", "../models/tuan"],
function(a, b, c) {
    function d(a, b) {
        var c, d = 0,
        e = 0,
        f = 0,
        h = 0;
        g.each(a.recomList,
        function(a, b) {
            b.clickUrl.match(/showkc/) ? f++:b.clickUrl.match(/show\-3/) ? h++:b.clickUrl.match(/website\=(taobao|tmall)/) ? d++:e++
        }),
        i.kLog({
            systemName: "side-show",
            showkc: f,
            media: h,
            recomt: d,
            recomb: e,
            pos: b,
            ref: encodeURIComponent(document.referrer)
        }),
        g(".TTK-juxiao-wrap li").on("click",
        function() {
            c = g(this).find("a").attr("href").match(/showkc/) ? 1 : g(this).find("a").attr("href").match(/show\-3/) ? 2 : g(this).find("a").attr("href").match(/website\=(taobao|tmall)/) ? 3 : 4,
            i.kLog({
                systemName: "side-click",
                pos: b,
                type: c,
                ref: encodeURIComponent(document.referrer)
            })
        })
    }
    function e(a) {
        return "undefined" != typeof a.recomList && a.recomList[0] ? (a.recomList.length > 4 && (a.recomList.length = 4), this.box = g("#TTK-sub-wrap"), this.init(a), void d(a, 2)) : !1
    }
    function f() {
        m.on("juxiao.tts.success",
        function(a, b) {
            new e(b)
        }),
        k.juxiao("", "")
    }
    var g = a("../lib/jquery"),
    h = a("../templates.jst"),
    i = a("../utils"),
    j = a("../host"),
    k = a("../models/models"),
    l = a("../product"),
    m = g("body");
    e.prototype = {
        init: function(a) {
            var b = h["bijia/juxiao"];
            m.find("#TTK-sub-wrap")[0] ? g("#TTK-sub-wrap").append(b(a)) : g(b(a)).insertAfter(i.getContainer()),
            this.renderEvent()
        },
        renderEvent: function() {
            g(".TTK-juxiao-wrap").on("click", ".TTS-list-product-img",
            function() {
                i.statLog_one({
                    systemName: "ttk_recommend_clikc_log",
                    sTyp: "",
                    sPid: l.item.getID(),
                    sPric: "",
                    sProPric: "",
                    cType: g(this).data().stat,
                    cid: l.item.getCid(),
                    pid: "",
                    price: "",
                    cNum: g(this).index() + 1,
                    ptype: j.pageType
                }),
                i.statLog_one({
                    systemName: "ttk_flow",
                    cType: 7,
                    ref: location.host,
                    url: location.href
                }),
                g(this).attr("href").match(/\/\/show-3\.mediav\.com\//) && i.statLog_one({
                    systemName: "ttk_flow",
                    cType: 3,
                    ref: location.host,
                    url: encodeURIComponent(g(this).attr("href"))
                })
            })
        }
    },
    c.exports = {
        init: function() {
            f()
        }
    }
}),
__tk__define("views/juxiaoJuzi", ["../lib/jquery", "../templates.jst", "../utils", "../host", "../models/models", "../models/taobao", "../models/jsonp", "./prefix", "../lib/underscore", "../models/api", "../product", "../utils/env", "../models/b2c", "../models/remind", "../models/lds", "../models/juxiao", "../models/tuan", "./../utils/tts_stat"],
function(a, b, c) {
    function d(a, b) {
        var c, d = 0,
        e = 0,
        g = 0,
        i = 0;
        f.each(a.recomList,
        function(a, b) {
            b.clickUrl.match(/showkc/) ? g++:b.clickUrl.match(/show\-3/) ? i++:b.clickUrl.match(/website\=(taobao|tmall)/) ? d++:e++
        }),
        h.kLog({
            systemName: "side-show",
            showkc: g,
            media: i,
            recomt: d,
            recomb: e,
            pos: b,
            ref: encodeURIComponent(document.referrer)
        }),
        f(".juzi_wrap li").on("click",
        function() {
            c = f(this).find("a").attr("href").match(/showkc/) ? 1 : f(this).find("a").attr("href").match(/show\-3/) ? 2 : f(this).find("a").attr("href").match(/website\=(taobao|tmall)/) ? 3 : 4,
            h.kLog({
                systemName: "side-click",
                pos: b,
                type: c,
                ref: encodeURIComponent(document.referrer)
            })
        }),
        f(".TTK-juxiao-wrap li").on("click",
        function() {
            c = f(this).find("a").attr("href").match(/showkc/) ? 1 : f(this).find("a").attr("href").match(/show\-3/) ? 2 : f(this).find("a").attr("href").match(/website\=(taobao|tmall)/) ? 3 : 4,
            h.kLog({
                systemName: "side-click",
                pos: b,
                type: c,
                ref: encodeURIComponent(document.referrer)
            })
        })
    }
    function e() {
        var a = this;
        j.on("juxiao.tts.success",
        function(b, c) {
            a.init(c)
        }),
        i.juxiao("", "")
    }
    var f = a("../lib/jquery"),
    g = a("../templates.jst"),
    h = a("../utils"),
    i = (a("../host"), a("../models/models")),
    j = (a("../product"), a("./../utils/tts_stat"), f("body"));
    e.prototype = {
        init: function(a) {
            a.recomList.length > 4 && (a.recomList.length = 4);
            var b = g["juzi/juxiao"],
            c = {
                list: a.recomList
            };
            f(b(c)).appendTo(".cqol"),
            f(".juzi_same_wrap ul").addClass("juzi_wrap"),
            d(a, 2)
        }
    },
    c.exports = {
        init: function() {
            new e
        }
    }
}),
__tk__define("views/juzi/mid", ["../../lib/jquery", "../../host", "../../utils", "../../product", "../../utils/tts_stat", "../../lib/underscore", "../../templates.jst", "../../lib/jquery.tmpl", "./mid.qutu", "./mid.under"],
function(a, b, c) {
    function d(b) {
        if ("" === g.getContainer()) return ! 1;
        var c = h["juzi/juzi.mid"];
        f(c({
            list: "cc"
        })).insertAfter(g.getContainer()),
        g.stat("tool_priceremind_PV", !0),
        a("./mid.qutu").init(b),
        a("./mid.under").init()
    }
    function e(a) {
        d(a)
    }
    var f = a("../../lib/jquery"),
    g = (a("../../host"), a("../../utils")),
    h = (a("../../product"), a("../../utils/tts_stat"), a("../../templates.jst"));
    f("body");
    a("../../lib/jquery.tmpl"),
    c.exports = {
        init: function(a) {
            e(a)
        }
    }
}),
__tk__define("views/juzi/mid.qutu", ["../../lib/jquery", "../../host", "../../utils", "../../product", "../../utils/tts_stat", "../../lib/underscore"],
function(a, b, c) {
    function d(a) {
        return 10 > a && (a = "0" + a.toString()),
        a
    }
    function e(a) {
        return Math.max.apply({},
        a)
    }
    function f(a) {
        return Math.min.apply({},
        a)
    }
    function g(a, b) {
        var c = a;
        return a = a.toString(),
        a.match(/\./) || (c = 0 === a ? 0 : b ? a / 100 : a / 100),
        c
    }
    function h(a, b, c) {
        this.wrap = c;
        var d = [];
        "priceHistoryList" in a && (d = a.priceHistoryList),
        this.nPrice = n,
        this.nDay = new Date(a.currentDate).getTime();
        var g = {
            beginXY: 5,
            ySetpPx: 35,
            xSetpPx: 54
        };
        this.color = "#ff3b30",
        this.two_month = !0;
        var h = !1;
        this.wending = !1,
        this.tag = h,
        this.fixs = i.extend({},
        g, b),
        this.warpNum = 6,
        this.priceAndDate = d;
        var j = this.getPriceAndDate(d);
        d[0] || (h = !1, this.priceAndDate = [{
            price: this.nPrice,
            time: (new Date).getTime()
        }], j = {
            date: [(new Date).getTime()],
            price: [this.nPrice],
            parseData: [{
                price: this.nPrice,
                time: (new Date).getTime()
            }]
        },
        this.wending = !0),
        this.price = j.price,
        1 === this.price.length && this.price[0] === this.nPrice && (this.wending = !0),
        this.avg = this.getAvg(this.price),
        this.lengthSecPrice = this.price[this.price.length - 1],
        this.price[this.price.length - 2] && (this.lengthThridPrice = this.price[this.price.length - 2]),
        this.date = j.date,
        "" !== this.nPrice && (this.price.push(this.nPrice), this.date.push(this.nDay)),
        this.btn = this.wrap.siblings(".TK-mind-sub-nav").find(".TK-mind-sub-qutu"),
        this.initBtn(this.btn, h),
        this.max = e(this.price),
        this.min = f(this.price),
        (this.max !== this.nPrice || this.min !== this.nPrice) && (this.wending = !1),
        this.ySetp = this.pareSetp(this.min, this.max),
        2 === this.warpNum && (this.yAxisClass = "2", this.fixs.ySetpPx = 105),
        (h || this.wending) && (this.warpNum = 2, this.yAxisClass = "3", this.fixs.ySetpPx = 105),
        this.downYAxi = this.parseDownYAxi(this.min, this.ySetp, this.wending),
        this.yAxis = this.getYaxisData(this.ySetp, this.warpNum, this.wending),
        this.xAxis = this.getXaerx(),
        this.upYAxi = this.yAxis[0],
        this.matchY = this.fixs.ySetpPx / this.ySetp,
        this.matchX = this.fixs.xSetpPx / 10 * 1.15,
        this.drawCanvasBase(this.color, this.wending),
        this.drawCanvasLayout(this.color, this.wending),
        this.drawYaxi(),
        this.drawXaxi()
    }
    var i = a("../../lib/jquery"),
    j = (a("../../host"), a("../../utils")),
    k = a("../../product"),
    l = a("../../utils/tts_stat"),
    m = i("body"),
    n = "";
    "" !== k.item.getPrice() && (n = parseInt(k.item.getPrice(), 10)),
    h.prototype = {
        getBtnClass: function(a, b) {
            var c = "TK-icon-sub-null",
            d = i(".J-TK-mind-sub-icon-text");
            if (b) c = "TK-icon-sub-end",
            d.text("价格很平稳!");
            else {
                var e, f = this.refLoop(this.nPrice, this.priceAndDate);
                e = this.priceAndDate[f + 1] ? new Date(this.priceAndDate[f + 1].time).getTime() : new Date(this.priceAndDate[f].time).getTime(),
                this.nDay - e < 2592e6 && (this.lengthSecPrice = this.priceAndDate[f].price),
                this.priceAndDate[f].price === this.nPrice ? (c = "TK-icon-sub-end", d.text("价格很平稳!")) : this.nPrice <= this.min ? (c = "TK-icon-sub-down", d.text("历史最低!")) : this.lengthSecPrice > this.nPrice ? (this.color = "#63d089", c = "TK-icon-sub-down", d.text("降价啦!")) : this.lengthSecPrice < this.nPrice ? (c = "TK-icon-sub-up", d.text("涨价啦!")) : (c = "TK-icon-sub-end", d.text("价格很平稳!"))
            }
            a.addClass(c)
        },
        initBtn: function(a, b) {
            this.msgBox = this.wrap.find(".TK-qutu-sub-msg");
            var c = null,
            d = !1,
            e = a.parent().siblings(".TK-qutu-sub-warp");
            a.on("mouseenter",
            function() {
                clearTimeout(c),
                e.addClass("TK-qutu-sub-wrap-hover"),
                c = null,
                d = !0
            }),
            a.on("mouseleave",
            function() {
                c = setTimeout(function() {
                    e.removeClass("TK-qutu-sub-wrap-hover"),
                    d = !1,
                    c = null
                },
                300)
            }),
            e.on({
                mouseover: function() {
                    clearTimeout(c),
                    e.addClass("TK-qutu-sub-wrap-hover")
                },
                mouseout: function() {
                    c = setTimeout(function() {
                        e.removeClass("TK-qutu-sub-wrap-hover"),
                        j.stat("tool_curve_PV", !0),
                        l.trackLog("tool_curve_PV"),
                        d = !1,
                        c = null
                    },
                    300)
                }
            }),
            this.getBtnClass(a, b)
        },
        getAvg: function(a) {
            for (var b = a.length,
            c = 0,
            d = 0; b > d; d++) c += a[d];
            return c / b
        },
        getYdata: function() {
            for (var a, b, c, d, e, f, h, i, j, k, l, m, n, o = this,
            p = [], q = [], r = !0, s = !0, t = 0; t < this.price.length; t++) d = Math.round(this.date[t] / 864e5),
            a = Math.round((this.upYAxi - this.price[t]) * this.matchY) + (this.fixs.beginXY - 2),
            b = Math.round((d - this.minDay) * this.matchX),
            c = this.price[t],
            o.tag || t < this.price.length - 1 && (p.push(2 * a), q.push(g(c, !0))),
            p.push(2 * a),
            t === this.price.length - 1 && (h = a, m = b, n = b),
            c === this.min ? (k = t + 1, l = this.price[k], l !== this.min && r && (e = a, j = b, 10 > j && (j = parseFloat((parseFloat(this.date[k] / 864e5) - this.minDay) * this.matchX) - 4), r = !1)) : c === this.max && (k = t + 1, l = this.price[k], l !== this.max && s && (f = a, i = b, 10 > i && (i = parseFloat((parseFloat(this.date[k] / 864e5) - this.minDay) * this.matchX) - 4), s = !1)),
            q.push(g(c, !0));
            if (!o.tag) {
                var u = p.length;
                p.push(p[u - 1])
            }
            var v, w;
            return v = m === j ? !0 : !1,
            w = i === n ? !0 : !1,
            {
                Ypx: p,
                Yprice: q,
                isinX: v,
                isinY: w,
                nowY: h,
                minY: e,
                maxY: f,
                minX: j / this.bili + 6,
                maxX: i / this.bili + 6
            }
        },
        getXdata: function() {
            for (var a, b, c, e, f, g = [], h = [], i = this, j = 0; j < this.date.length; j++) e = Math.round(this.date[j] / 864e5),
            a = Math.round((e - this.minDay) * this.matchX),
            c = new Date(this.date[j]),
            b = c.getFullYear() + "/" + d(c.getMonth() + 1) + "/" + d(c.getDate()),
            i.tag || j > 0 && (g.push(2 * (a + this.fixs.beginXY - 8) / this.bili + 12), h.push(b)),
            g.push(2 * a / this.bili + 12),
            this.price[j] === this.min && (f = a + this.fixs.beginXY),
            h.push(b);
            if (!i.tag) {
                var k = g.length;
                g.push(g[k - 1] + 6)
            }
            return {
                Xpx: g,
                Xdate: h,
                minX: f + 12
            }
        },
        pareSetp: function(a, b, c) {
            var d, e = this,
            f = b - a,
            g = 100;
            d = "floor" === c ? Math.floor(f / 3 / g) * g: "ceil" === c ? Math.ceil(f / 3 / g) * g: Math.round(f / 3 / g) * g,
            0 === d && (d = 100);
            var h = function(a) {
                for (var b = "1",
                c = 1; a > c; c++) b += "0";
                return parseInt(b, 10)
            },
            i = d.toString().length,
            j = d / h(i);
            return g = Math.round(j) * h(i),
            0 === f ? g = 100 : 100 > f && (g = 50, e.warpNum = 2),
            g
        },
        parseDownYAxi: function(a, b, c) {
            return a = Math.floor(a / b) * b
        },
        nextUniq: function(a) {
            for (var b, c, d = a,
            e = [], f = 0, g = d.length; g > f; f++) b = d[f],
            c = d[f + 1],
            "undefined" != typeof c ? (new Date(b.time).getMonth() + 1 !== new Date(c.time).getMonth() + 1 || new Date(b.time).getDate() !== new Date(c.time).getDate()) && e.push(d[f]) : e.push(d[f]);
            return e
        },
        getPriceAndDate: function(a) {
            var b, c = this.nextUniq(a),
            d = [],
            e = [],
            f = [];
            if (c[0]) for (var g = 0; g < c.length; g++) b = {
                price: c[g].price,
                time: new Date(c[g].time).getTime()
            },
            d.push(b.price),
            e.push(b.time),
            f.push(b);
            else d = [this.nPrice],
            e = [(new Date).getTime() - 864e5 * this.days],
            f = [];
            return {
                price: d,
                date: e,
                parseData: f
            }
        },
        getYaxisData: function(a, b, c) {
            var d = [],
            e = a,
            f = this.downYAxi;
            2 !== this.warpNum || this.tag || (e = 100),
            2 !== this.warpNum || c || (this.max - e >= f || this.min <= f) && (f = this.min <= f ? this.downYAxi - 100 : this.downYAxi, this.warpNum = 3, this.fixs.ySetpPx = 53, d = [], this.yAxisClass = "3"),
            6 === this.warpNum && f + 5 * e - this.max <= .5 * e ? (e = 1.5 * e, e > 100 && (e = 100 * Math.ceil(e / 100)), this.ySetp = e) : 3 === this.warpNum && f + 2 * e - this.max <= .2 * e ? (e = 1.2 * e, e > 100 && (e = 100 * Math.ceil(e / 100)), this.ySetp = 100) : 2 === this.warpNum && f + e - this.max <= .1 * e && (e = 1.1 * e, e > 100 && (e = 100 * Math.ceil(e / 100)), this.ySetp = 200);
            for (var g = 0; g < this.warpNum; g++) d.unshift(f),
            f += e;
            return d
        },
        getXaerx: function() {
            this.startDate = new Date(this.date[0]).getTime(),
            this.bili = ((new Date).getTime() - this.startDate) / 5184e6;
            var a = (new Date).getTime() - 7776e5,
            b = this.startDate,
            c = 864e6 * this.bili;
            this.minDay = Math.round(b / 864e5);
            var e, f, g = [],
            h = {
                0 : "1",
                1 : "2",
                2 : "3",
                3 : "4",
                4 : "5",
                5 : "6",
                6 : "7",
                7 : "8",
                8 : "9",
                9 : "10",
                10 : "11",
                11 : "12"
            };
            c = c / 7 * 6;
            var i = 7;
            this.tag && (b = a - 5184e6, c = 864e6, this.minDay = Math.round(b / 864e5), this.bili = 1, i = 6),
            44064e5 > a - b && (b = a - 44064e5, c = 864e6 / 7 * 6, this.minDay = Math.round(b / 864e5), this.bili = 1, i = 7, this.two_month = !1);
            for (var j = 0; i > j; j++) b += c,
            e = new Date(b),
            f = d(h[e.getMonth()]) + "/" + d(e.getDate()),
            g.push(f);
            return g
        },
        dashedLineTo: function(a, b, c, d, e, f) {
            "undefined" == typeof f && (f = 5);
            var g = d - b,
            h = e - c,
            i = Math.floor(Math.sqrt(g * g + h * h)),
            j = 0 >= f ? i: i / f,
            k = h / i * f,
            l = g / i * f;
            a.beginPath();
            for (var m = 0; j > m; m++) m % 2 ? a.lineTo(b + m * l, c + m * k) : a.moveTo(b + m * l, c + m * k);
            a.stroke()
        },
        getObjXY: function() {
            for (var a, b = this.getYdata().Ypx, c = this.getXdata().Xpx, d = this.getYdata().Yprice, e = this.getXdata().Xdate, f = [], g = 0; g < c.length; g++) a = {
                x: c[g],
                y: b[g],
                p: d[g],
                d: e[g]
            },
            f.push(a);
            return f
        },
        drawCanvasBase: function(a, b) {
            var c = this.wrap.find(".TK-canvas-sub-base")[0],
            d = this.fixs.beginXY,
            e = 2 * (210 + d),
            f = 760,
            h = this.warpNum,
            i = this.fixs.ySetpPx;
            if (3 === this.warpNum && (h = 4), b && (h = 2, i = 105), c.getContext) {
                var j = c.getContext("2d"),
                k = 108;
                j.lineWidth = 2,
                j.strokeStyle = "#e6e6e6";
                for (var l = 0; h >= l; l++) j.beginPath(),
                j.moveTo(d + 4, l * i * 2 + d),
                j.lineTo(f + 6, l * i * 2 + d),
                j.stroke();
                j.beginPath(),
                j.moveTo(d + 6, d),
                j.lineTo(d + 6, e - 3),
                j.stroke();
                for (var m = 0; 6 >= m; m++) j.beginPath(),
                j.moveTo(k + 6, d),
                j.lineTo(k + 6, e - 3),
                k += 108.6,
                j.stroke();
                j.save();
                var n, o = this.getYdata().Ypx,
                p = this.getXdata().Xpx;
                if (this.tag) {
                    p = 118;
                    for (var q = 0; 31 > q; q++) j.beginPath(),
                    30 === q || 0 === q ? j.arc(p, o[0], 5, 0, 2 * Math.PI, !1) : j.arc(p, o[0], 3, 0, 2 * Math.PI, !1),
                    30 === q ? j.fillStyle = "#23a839": j.fillStyle = "#ff3b30",
                    j.fill(),
                    p += 21;
                    j.font = "24px Arial",
                    j.fillStyle = "#666",
                    this.max >= 1e5 ? j.fillText("¥" + g(this.max, !0), 770, 2 * (this.getYdata().nowY + 5)) : j.fillText("¥" + g(this.max, !0).toFixed(2), 770, 2 * (this.getYdata().nowY + 5)),
                    j.globalCompositeOperation = "source-atop"
                } else if (b) {
                    for (n = 0; n < o.length; n++) j.beginPath(),
                    j.arc(p[n], o[n], 2, 0, 2 * Math.PI, !1),
                    j.fillStyle = "#ff3b30",
                    j.fill(),
                    j.lineWidth = 3,
                    j.strokeStyle = "#ff3b30",
                    j.beginPath(),
                    j.moveTo(p[n], o[n]),
                    j.lineTo(p[n + 1], o[n + 1]),
                    j.stroke();
                    this.two_month || this.dashedLineTo(j, 12, o[0], p[0], o[0], 3),
                    j.strokeStyle = "#ff3b30",
                    j.font = "24px Arial",
                    j.fillStyle = "#666",
                    this.max >= 1e5 ? j.fillText("¥" + g(this.max, !0), 770, 2 * (this.getYdata().nowY + 5)) : j.fillText("¥" + g(this.max, !0).toFixed(2), 770, 2 * (this.getYdata().nowY + 5))
                } else {
                    for (n = 0; n < o.length; n++) j.beginPath(),
                    j.arc(p[n], o[n], 2, 0, 2 * Math.PI, !1),
                    j.fillStyle = "#ff3b30",
                    j.fill(),
                    j.lineWidth = 3,
                    j.strokeStyle = "#ff3b30",
                    j.beginPath(),
                    j.moveTo(p[n], o[n]),
                    j.lineTo(p[n + 1], o[n + 1]),
                    j.stroke();
                    this.two_month || this.dashedLineTo(j, 12, o[0], p[0], o[0], 3),
                    this.getYdata().isinY ? j.fillStyle = "#ff3b30": this.getYdata().isinX ? j.fillStyle = "#23a839": j.fillStyle = "#999999",
                    j.font = "24px tahoma",
                    j.fillText(" 现价", 770, 2 * this.getYdata().nowY),
                    j.font = "24px tahoma",
                    this.nPrice >= 1e5 ? j.fillText("¥" + g(this.nPrice, !0), 775, 2 * (this.getYdata().nowY + 15)) : j.fillText("¥" + g(this.nPrice, !0).toFixed(2), 775, 2 * (this.getYdata().nowY + 15)),
                    j.font = "24px tahoma",
                    j.fillStyle = "#23a839",
                    this.getYdata().isinX || j.fillText("¥" + g(this.min, !0).toFixed(2), 2 * (this.getYdata().minX - 4), 2 * (this.getYdata().minY + 18)),
                    this.position_Max_Min(j, 2 * this.getYdata().minX, 2 * this.getYdata().minY, "#23a839"),
                    j.font = "24px tahoma",
                    j.fillStyle = "#ff3b30",
                    this.getYdata().isinY || j.fillText("¥" + g(this.max, !0).toFixed(2), 2 * (this.getYdata().maxX - 4), 2 * (this.getYdata().maxY - 10)),
                    this.position_Max_Min(j, 2 * this.getYdata().maxX, 2 * this.getYdata().maxY, "#ff3b30"),
                    j.globalCompositeOperation = "source-atop"
                }
            }
        },
        position_Max_Min: function(a, b, c, d) {
            a.beginPath(),
            a.moveTo(b, c),
            a.arc(b, c, 10, 0, 2 * Math.PI, !1),
            a.closePath(),
            a.fillStyle = d,
            a.fill(),
            a.beginPath(),
            a.moveTo(b, c),
            a.arc(b, c, 8, 0, 2 * Math.PI, !1),
            a.closePath(),
            a.fillStyle = "#fff",
            a.fill(),
            a.beginPath(),
            a.moveTo(b, c),
            a.arc(b, c, 5, 0, 2 * Math.PI, !1),
            a.closePath(),
            a.fillStyle = d,
            a.fill()
        },
        drawCanvasLayout: function(a) {
            var b = this,
            c = this.wrap.find(".TK-canvas-sub-layout")[0];
            if (c.getContext) {
                var d, e, f = c.getContext("2d"),
                g = function() {
                    var a = b.getObjXY();
                    i(c).on("mousemove",
                    function(g) {
                        d = g.pageX || g.clientX || 0,
                        e = g.pageY || g.clientY || 0,
                        d = d - i(c).offset().left + 6,
                        e -= i(c).offset().top,
                        f.clearRect(0, 0, c.width, c.height),
                        b.msgBox.hide(),
                        i(a).each(function(c, e) {
                            d >= e.x / 2 - 2 && a[c + 1] && d <= a[c + 1].x / 2 - 2 && (b.msgBox.css({
                                left: d - 22,
                                top: e.y / 2 - 46
                            }).show(), b.msgBox.html('<div class="TK-qutu-sub-msg-wrap"><p>日期：' + b.pxTodata(d) + "</p><p>价格：<span>&yen " + e.p + "</span></p></div>"), f.beginPath(), f.arc(2 * d, e.y, 8, 0, 2 * Math.PI, !1), f.fillStyle = "#ff3b30", f.fill())
                        })
                    })
                };
                g()
            }
        },
        pxTodata: function(a) {
            var b, c = 864e5 * ((a - 6) / this.matchX * this.bili + this.minDay),
            e = {
                0 : "1",
                1 : "2",
                2 : "3",
                3 : "4",
                4 : "5",
                5 : "6",
                6 : "7",
                7 : "8",
                8 : "9",
                9 : "10",
                10 : "11",
                11 : "12"
            },
            f = new Date(c);
            return b = f.getFullYear() + "/" + d(e[f.getMonth()]) + "/" + d(f.getDate())
        },
        drawYaxi: function() {
            for (var a = this.yAxis,
            b = "",
            c = 0; c < a.length; c++) b += '<span class="TK-qutu-sub-price-item TK-qutu-sub-price-item-' + this.yAxisClass + '">',
            b += "" === g(a[c]) ? 0 : g(a[c]),
            b += "</span>";
            i(".TK-qutu-sub-price").html(b)
        },
        drawXaxi: function() {
            var a = this.xAxis,
            b = "";
            i.each(a,
            function(a, c) {
                b += '<span class="TK-qutu-sub-data-item">' + c + "</span>"
            }),
            i(".TK-qutu-sub-data").html(b)
        },
        refLoop: function(a, b) {
            for (var c = b.length; c--;) if (Math.abs(b[c].price - a) > 10) return c;
            return b.length - 1
        }
    },
    c.exports = {
        init: function() {
            m.on("tk.priceHistory",
            function(a, b) {
                j.stat("tool_curvebutton_PV", !0),
                new h(b, {},
                i(".TK-qutu-sub-warp"))
            })
        }
    }
}),
__tk__define("views/juzi/mid.under", ["../../lib/jquery", "../../host", "../../utils", "../../templates.jst", "../../utils/tts_stat", "../../lib/underscore"],
function(a, b, c) {
    function d(a) {
        e(a)
    }
    function e(a) {
        var b = i["bijia/sub.remind.min"];
        g(".J-TK-mind-sub-under-warp").empty().append(b(a)),
        h.stat("tool_lowest_PV", !0),
        f()
    }
    function f() {
        var a = null,
        b = !1,
        c = g(".J-TK-mind-sub-under-pop"),
        d = g(".TK-mind-sub-under");
        d.on("mouseenter",
        function() {
            clearTimeout(a),
            h.stat("tool_lowest_magnify_PV", !0),
            j.trackLog("tool_lowest_magnify_PV"),
            c.addClass("TK-mind-sub-under-hover"),
            a = null,
            b = !0
        }),
        d.on("mouseleave",
        function() {
            a = setTimeout(function() {
                c.removeClass("TK-mind-sub-under-hover"),
                b = !1,
                a = null
            },
            300)
        }),
        c.on({
            mouseover: function() {
                clearTimeout(a),
                c.addClass("TK-mind-sub-under-hover")
            },
            mouseout: function() {
                a = setTimeout(function() {
                    c.removeClass("TK-mind-sub-under-hover"),
                    b = !1,
                    a = null
                },
                300)
            }
        })
    }
    var g = a("../../lib/jquery"),
    h = (a("../../host"), a("../../utils")),
    i = a("../../templates.jst"),
    j = a("../../utils/tts_stat"),
    k = g("body");
    c.exports = {
        init: function() {
            k.on("tts.bijia.min.product",
            function(a, b) {
                d(b)
            })
        }
    }
}),
__tk__define("views/juzi/taobao", ["../../lib/jquery", "../../lib/underscore", "../../utils", "../../host", "../../templates.jst", "../../utils/tts_stat", "../../models/models", "../../models/taobao", "../../models/jsonp", "../prefix", "../../models/api", "../../product", "../../utils/env", "../../models/b2c", "../../models/remind", "../../models/lds", "../../models/juxiao", "../../models/tuan", "../../mustache_helpers", "../../lib/handlebars", "./taobao.qutu", "./mid", "../../lib/jquery.tmpl", "./mid.qutu", "./mid.under"],
function(a, b, c) {
    var d = a("../../lib/jquery"),
    e = a("../../lib/underscore"),
    f = a("../../utils"),
    g = a("../../templates.jst"),
    h = a("../../utils/tts_stat"),
    i = a("../../models/models"),
    j = (a("../../host"), d("body"));
    a("../../mustache_helpers"),
    c.exports = function() {
        return {
            init: function() {
                h.init(),
                h.trackEvent("Bottomtab_PV"),
                this.attachModelEvent(),
                this.attachViewEvent();
                var a = {
                    type: "all",
                    positionInfo: "detail"
                };
                i.fetch(a)
            },
            $el: null,
            template: g["juzi/juzi"],
            viewDeferred: new d.Deferred,
            remindViewDeferred: new d.Deferred,
            qutuViewDeferred: new d.Deferred,
            attachModelEvent: function() {
                var a = this;
                j.on({
                    "tk.sync.success": function(b, c) {
                        a.initModel(c),
                        setTimeout(function() {
                            a.bottom_log(4)
                        },
                        500)
                    },
                    "tk.sync.promoprice": function(b, c) {
                        a.updateModel(c)
                    },
                    "tts.bijia.same.render": function(b, c) {
                        a.renderView(c)
                    },
                    "tts.bijia.same.update": function(b, c) {
                        a.renderSameView(c),
                        setTimeout(function() {
                            a.bottom_log(4)
                        },
                        500)
                    }
                })
            },
            attachViewEvent: function() {
                var a = this;
                d(".TTS-juzi-logo");
                j.on("click", ".TTS-bijia-min-btn",
                function() {
                    d(this).hasClass("juzi-fold") ? h.trackEvent("Bottomtab_shorten_click") : h.trackEvent("Bottomtab_stretch_click"),
                    d(this).toggleClass("juzi-fold juzi-unfold"),
                    a.$el.toggleClass("juzi-min", d(this).hasClass("juzi-unfold")),
                    a.$el.find(".TTS_logo_juzi").toggleClass("juzi-unlogo", d(this).hasClass("juzi-unfold"))
                }),
                j.on("mouseenter", ".TTS-list-left-wrap li",
                function() {
                    var b, c, e = g["bijia/taobao.same.pop"];
                    a.model.sameList.length ? (b = a.model.sameList, c = b[d(this).index()], c.isSameList = !0, h.trackEvent("Bottomtab_group_magnify_PV"), h.trackLog("Bottomtab_group_magnify_PV")) : (b = a.model.similarList, c = b[d(this).index()], h.trackEvent("Bottomtab_recom_magnify_PV"), h.trackLog("Bottomtab_recom_magnify_PV")),
                    a.focusProduct(d(this)),
                    a.showPopDialog(d(this), e, c)
                }).on("mouseleave", ".TTS-list-left-wrap li",
                function() {
                    a.blurProduct(d(this)),
                    a.hidePopDialog(d(this))
                })
            },
            initModel: function(a) {
                this.model = a,
                j.trigger("tts.bijia.same.render", [this.model])
            },
            updateModel: function(a) {
                this.model = a,
                j.trigger("tts.bijia.same.update", [this.model])
            },
            renderView: function(b) {
                var c = f.getConfig();
                this.$el = d(this.template(b)).appendTo("body"),
                this.viewDeferred.resolve();
                try {
                    document.createElement("canvas").getContext("2d"),
                    a("./taobao.qutu").init(),
                    a("./mid").init(b.ttsid),
                    c.taobao.model.qutu && (b.isShowQutu = !0, this.qutuViewDeferred.resolve(b.ttsid))
                } catch(e) {}
                this.renderSameView(b),
                this.emuResponsive(b)
            },
            renderSameView: function(a, b) {
                var c, e = this,
                f = g["bijia/taobao.same"]; (a.sameList.length || a.similarList.length) && (a.sameList.length ? (b || h.trackEvent("Bottomtab_group_PV"), d.each(a.sameList,
                function(a, b) {
                    b.isMin && j.trigger("tts.bijia.min.product", [b])
                }), c = {
                    list: a.sameList,
                    isSameList: !0
                }) : a.similarList.length && (b || h.trackEvent("Bottomtab_recom_PV"), c = {
                    list: a.similarList
                }), this.$el.find(".TTS-list-left").empty().append(f(c)), d(".juzi-more-same-clicked").addClass("juzi-more-same-tb"), d(".TTS-products-wrap").addClass("hasContent")),
                a.sameList[0] || a.similarList[0] || 3 !== a.cateType || (this.renderBiaoleiView(a), d(".TTS-products-wrap").show(), d(".TTS-bijia-more-btn").addClass("juzi-more-same-tb"), d(".TTS-bijia-more-btn").show()),
                a.issame ? d(".TTS-bijia-more-btn").html("<span>更多同款</span>") : a.issimilar && d(".TTS-bijia-more-btn").html("<span>更多推荐</span>"),
                this.$el.find(".TTS-list-lowestPrice").length && (b && h.trackEvent("Bottomtab_lowesttag_PV"), setTimeout(function() {
                    var a = e.$el.find(".TTS-list-lowestPrice");
                    a.trigger("mouseenter"),
                    setTimeout(function() {
                        a.trigger("mouseleave")
                    },
                    4e3)
                },
                0))
            },
            bottom_log: function(a) {
                f.kLog({
                    systemName: "bottom-show",
                    pos: a,
                    url: location.href,
                    ref: encodeURIComponent(document.referrer)
                });
                var b;
                d(".TTS-list-left-wrap li").on("click",
                function() {
                    b = d(this).find("a").attr("href").match(/showkc/) ? 1 : d(this).find("a").attr("href").match(/show\-3/) ? 2 : d(this).find("a").attr("href").match(/website\=(taobao|tmall)/) ? 3 : 4,
                    f.kLog({
                        systemName: "bottom-click",
                        pos: a,
                        type: b,
                        ref: encodeURIComponent(document.referrer)
                    })
                }),
                d(".TTS-biaolei .TTS-biaolei-one").on("click",
                function() {
                    b = d(this).find("a").attr("href").match(/showkc/) ? 1 : d(this).find("a").attr("href").match(/show\-3/) ? 2 : d(this).find("a").attr("href").match(/website\=(taobao|tmall)/) ? 3 : 4,
                    f.kLog({
                        systemName: "bottom-click",
                        pos: a,
                        type: b,
                        ref: encodeURIComponent(document.referrer)
                    })
                })
            },
            emuResponsive: function(a) {
                var b = [334, 589, 934, 1254, 1553, 999999];
                a.isShowRemind || a.isShowQutu ? a.isShowRemind && a.isShowQutu || (b = e.map(b,
                function(a) {
                    return a - 80
                })) : b = e.map(b,
                function(a) {
                    return a - 160
                }),
                b = e.zip(e.initial(b), e.rest(b)),
                d(window).on("resize.tts",
                function() {
                    var a = d(window).width(),
                    c = ["tts-res-l0", "tts-res-l1", "tts-res-l2", "tts-res-l3", "tts-res-l4"];
                    j.removeClass(c.join(" ")),
                    e.some(b,
                    function(b, d) {
                        return a >= b[0] && a < b[1] ? (j.addClass(c[d]), !0) : void 0
                    })
                }).trigger("resize.tts")
            },
            renderBiaoleiView: function(a) {
                var b = g["bijia/taobao.biaolei"];
                this.$el.find(".TTS-list-left").empty().append(b({
                    list: a.dividedList
                })),
                this.addBiaoleiEvent()
            },
            addBiaoleiEvent: function() {
                d(".TTS-biaolei-list dd:last-child .TTS-biaolei").css("border", "0px"),
                j.on("mouseover", ".TTS-biaolei-list dd",
                function() {
                    d(this).find(".TTS-biaolei-product").show()
                }).on("mouseout", ".TTS-biaolei-list dd",
                function() {
                    d(this).find(".TTS-biaolei-product").hide()
                })
            },
            showPopDialog: function(a, b, c) {
                a.find(".TTS-bijia-pop").length ? a.find(".TTS-bijia-pop").show() : (this.$el.find(".TTS-bijia-pop").remove(), a.append(b(c)))
            },
            hidePopDialog: function(a) {
                a.find(".TTS-bijia-pop").hide()
            },
            focusProduct: function(a) {
                a.find(".TTS-list-product-detail").addClass("highlight")
            },
            blurProduct: function(a) {
                a.find(".TTS-list-product-detail").removeClass("highlight")
            },
            countdown: function(a) {
                var b = a.data();
                a.countdown(b.start, b.end).on("update.countdown",
                function(b) {
                    a.html(b.strftime("<span>%d</span>天<span>%H</span>小时<span>%M</span>分<span>%S</span>秒后开始"))
                }).on("upUpdate.countdown",
                function(b) {
                    a.html(b.strftime("仅剩%D天%H小时%M分%S.%c秒"))
                }).on("upfinish.countdown",
                function(b) {
                    a.html(b.strftime("活动结束"))
                })
            }
        }
    } ()
}),
__tk__define("views/juzi/taobao.qutu", ["../../lib/jquery", "../../host", "../../utils", "../../product", "../../templates.jst", "../../utils/tts_stat", "../../lib/underscore", "./taobao", "../../models/models", "../../models/taobao", "../../models/jsonp", "../prefix", "../../models/api", "../../utils/env", "../../models/b2c", "../../models/remind", "../../models/lds", "../../models/juxiao", "../../models/tuan", "../../mustache_helpers", "../../lib/handlebars", "./taobao.qutu", "./mid", "../../lib/jquery.tmpl", "./mid.qutu", "./mid.under"],
function(a, b, c) {
    function d(a) {
        return 10 > a && (a = "0" + a.toString()),
        a
    }
    function e(a) {
        return Math.max.apply({},
        a)
    }
    function f(a) {
        return Math.min.apply({},
        a)
    }
    function g(a, b) {
        var c = a;
        return a = a.toString(),
        a.match(/\./) || (c = 0 === a ? 0 : b ? a / 100 : a / 100),
        c
    }
    function h(a, b, c) {
        this.wrap = c;
        var d = [];
        "priceHistoryList" in a && (d = a.priceHistoryList),
        this.nPrice = q,
        this.nDay = new Date(a.currentDate).getTime();
        var g = {
            beginXY: 5,
            ySetpPx: 35,
            xSetpPx: 54
        };
        this.color = "#ff3b30";
        var h = !1;
        this.wending = !1,
        d[0] || (h = !0, this.wending = !1),
        this.tag = h,
        this.fixs = i.extend({},
        g, b),
        this.warpNum = 6,
        this.priceAndDate = d;
        var j = this.getPriceAndDate(d);
        this.price = j.price,
        1 === this.price.length && this.price[0] === this.nPrice && (this.wending = !0),
        this.avg = this.getAvg(this.price),
        this.lengthSecPrice = this.price[this.price.length - 1],
        this.price[this.price.length - 2] && (this.lengthThridPrice = this.price[this.price.length - 2]),
        this.date = j.date,
        "" !== this.nPrice && (this.price.push(this.nPrice), this.date.push(this.nDay)),
        this.btn = this.wrap.siblings(".TK-mind-sub-nav").find(".TK-mind-sub-qutu"),
        this.initBtn(this.btn, h),
        this.max = e(this.price),
        this.min = f(this.price),
        (this.max !== this.nPrice || this.min !== this.nPrice) && (this.wending = !1),
        this.ySetp = this.pareSetp(this.min, this.max),
        2 === this.warpNum && (this.yAxisClass = "2", this.fixs.ySetpPx = 105),
        (h || this.wending) && (this.warpNum = 2, this.yAxisClass = "3", this.fixs.ySetpPx = 105),
        this.downYAxi = this.parseDownYAxi(this.min, this.ySetp, this.wending),
        this.yAxis = this.getYaxisData(this.ySetp, this.warpNum, this.wending),
        this.xAxis = this.getXaerx(),
        this.upYAxi = this.yAxis[0],
        this.matchY = this.fixs.ySetpPx / this.ySetp,
        this.matchX = this.fixs.xSetpPx / 10 * 1.15,
        this.drawCanvasBase(this.color, this.wending),
        this.drawCanvasLayout(this.color, this.wending),
        this.drawYaxi(),
        this.drawXaxi()
    }
    var i = a("../../lib/jquery"),
    j = a("../../host"),
    k = a("../../utils"),
    l = a("../../product"),
    m = a("../../templates.jst"),
    n = a("../../utils/tts_stat"),
    o = a("./taobao"),
    p = i("body"),
    q = "";
    "" !== l.item.getPrice() && (q = parseInt(l.item.getPrice(), 10)),
    h.prototype = {
        getBtnClass: function(a, b) {
            var c = "TK-icon-sub-null",
            d = i(".J-TK-mind-sub-icon-text");
            if (b) c = "TK-icon-sub-end",
            d.text("价格很平稳!");
            else {
                var e, f = this.refLoop(this.nPrice, this.priceAndDate);
                e = this.priceAndDate[f + 1] ? new Date(this.priceAndDate[f + 1].time).getTime() : new Date(this.priceAndDate[f].time).getTime(),
                this.nDay - e < 2592e6 && (this.lengthSecPrice = this.priceAndDate[f].price),
                this.priceAndDate[f].price === this.nPrice ? (c = "TK-icon-sub-end", d.text("价格很平稳!")) : this.nPrice <= this.min ? (c = "TK-icon-sub-down", d.text("历史最低!")) : this.lengthSecPrice > this.nPrice ? (this.color = "#63d089", c = "TK-icon-sub-down", d.text("降价啦!")) : this.lengthSecPrice < this.nPrice ? (c = "TK-icon-sub-up", d.text("涨价啦!")) : (c = "TK-icon-sub-end", d.text("价格很平稳!"))
            }
            a.addClass(c)
        },
        initBtn: function(a, b) {
            this.msgBox = this.wrap.find(".TK-qutu-sub-msg");
            var c = null,
            d = !1,
            e = a.parent().siblings(".TK-qutu-sub-warp");
            a.on("mouseenter",
            function() {
                clearTimeout(c),
                e.addClass("TK-qutu-sub-wrap-hover"),
                c = null,
                d = !0
            }),
            a.on("mouseleave",
            function() {
                c = setTimeout(function() {
                    e.removeClass("TK-qutu-sub-wrap-hover"),
                    d = !1,
                    c = null
                },
                300)
            }),
            e.on({
                mouseover: function() {
                    clearTimeout(c),
                    e.addClass("TK-qutu-sub-wrap-hover")
                },
                mouseout: function() {
                    c = setTimeout(function() {
                        e.removeClass("TK-qutu-sub-wrap-hover"),
                        k.stat("tool_curve_PV", !0),
                        n.trackLog("tool_curve_PV"),
                        d = !1,
                        c = null
                    },
                    300)
                }
            }),
            this.getBtnClass(a, b)
        },
        getAvg: function(a) {
            for (var b = a.length,
            c = 0,
            d = 0; b > d; d++) c += a[d];
            return c / b
        },
        getYdata: function() {
            for (var a, b, c, d, e, f, h, i, j, k, l, m, n, o = this,
            p = [], q = [], r = !0, s = !0, t = 0; t < this.price.length; t++) d = Math.round(this.date[t] / 864e5),
            a = Math.round((this.upYAxi - this.price[t]) * this.matchY) + (this.fixs.beginXY - 2),
            b = Math.round((d - this.minDay) * this.matchX),
            c = this.price[t],
            o.tag || t < this.price.length - 1 && (p.push(2 * a), q.push(g(c, !0))),
            p.push(2 * a),
            t === this.price.length - 1 && (h = a, m = b, n = b),
            c === this.min ? (k = t + 1, l = this.price[k], l !== this.min && r && (e = a, j = b, 10 > j && (j = parseFloat((parseFloat(this.date[k] / 864e5) - this.minDay) * this.matchX) - 4), r = !1)) : c === this.max && (k = t + 1, l = this.price[k], l !== this.max && s && (f = a, i = b, 10 > i && (i = parseFloat((parseFloat(this.date[k] / 864e5) - this.minDay) * this.matchX) - 4), s = !1)),
            q.push(g(c, !0));
            if (!o.tag) {
                var u = p.length;
                p.push(p[u - 1])
            }
            var v, w;
            return v = m === j ? !0 : !1,
            w = i === n ? !0 : !1,
            {
                Ypx: p,
                Yprice: q,
                isinX: v,
                isinY: w,
                nowY: h,
                minY: e,
                maxY: f,
                minX: j / this.bili,
                maxX: i / this.bili
            }
        },
        getXdata: function() {
            for (var a, b, c, e, f, g = [], h = [], i = this, j = 0; j < this.date.length; j++) e = Math.round(this.date[j] / 864e5),
            a = Math.round((e - this.minDay) * this.matchX),
            c = new Date(this.date[j]),
            b = c.getFullYear() + "/" + d(c.getMonth() + 1) + "/" + d(c.getDate()),
            i.tag || j > 0 && (g.push(2 * (a + this.fixs.beginXY - 8) / this.bili), h.push(b)),
            g.push(2 * a / this.bili),
            this.price[j] === this.min && (f = a + this.fixs.beginXY),
            h.push(b);
            if (!i.tag) {
                var k = g.length;
                g.push(g[k - 1] + 6)
            }
            return {
                Xpx: g,
                Xdate: h,
                minX: f
            }
        },
        pareSetp: function(a, b, c) {
            var d, e = this,
            f = b - a,
            g = 100;
            d = "floor" === c ? Math.floor(f / 3 / g) * g: "ceil" === c ? Math.ceil(f / 3 / g) * g: Math.round(f / 3 / g) * g,
            0 === d && (d = 100);
            var h = function(a) {
                for (var b = "1",
                c = 1; a > c; c++) b += "0";
                return parseInt(b, 10)
            },
            i = d.toString().length,
            j = d / h(i);
            return g = Math.round(j) * h(i),
            0 === f ? g = 100 : 100 > f && (g = 50, e.warpNum = 2),
            g
        },
        parseDownYAxi: function(a, b, c) {
            return a = Math.floor(a / b) * b
        },
        nextUniq: function(a) {
            for (var b, c, d = a,
            e = [], f = 0, g = d.length; g > f; f++) b = d[f],
            c = d[f + 1],
            "undefined" != typeof c ? (new Date(b.time).getMonth() + 1 !== new Date(c.time).getMonth() + 1 || new Date(b.time).getDate() !== new Date(c.time).getDate()) && e.push(d[f]) : e.push(d[f]);
            return e
        },
        getPriceAndDate: function(a) {
            var b, c = this.nextUniq(a),
            d = [],
            e = [],
            f = [];
            if (c[0]) for (var g = 0; g < c.length; g++) b = {
                price: c[g].price,
                time: new Date(c[g].time).getTime()
            },
            d.push(b.price),
            e.push(b.time),
            f.push(b);
            else d = [this.nPrice],
            e = [(new Date).getTime() - 864e5 * this.days],
            f = [];
            return {
                price: d,
                date: e,
                parseData: f
            }
        },
        getYaxisData: function(a, b, c) {
            var d = [],
            e = a,
            f = this.downYAxi;
            2 !== this.warpNum || this.tag || (e = 100),
            2 !== this.warpNum || c || (this.max - e >= f || this.min <= f) && (f = this.min <= f ? this.downYAxi - 100 : this.downYAxi, this.warpNum = 3, this.fixs.ySetpPx = 53, d = [], this.yAxisClass = "3"),
            6 === this.warpNum && f + 5 * e - this.max <= .5 * e ? (e = 1.5 * e, e > 100 && (e = 100 * Math.ceil(e / 100)), this.ySetp = e) : 3 === this.warpNum && f + 2 * e - this.max <= .2 * e ? (e = 1.2 * e, e > 100 && (e = 100 * Math.ceil(e / 100)), this.ySetp = 100) : 2 === this.warpNum && f + e - this.max <= .1 * e && (e = 1.1 * e, e > 100 && (e = 100 * Math.ceil(e / 100)), this.ySetp = 100);
            for (var g = 0; g < this.warpNum; g++) d.unshift(f),
            f += e;
            return d
        },
        getXaerx: function() {
            this.startDate = new Date(this.date[0]).getTime(),
            this.bili = ((new Date).getTime() - this.startDate) / 5184e6;
            var a = (new Date).getTime() - 7776e5,
            b = this.startDate,
            c = 864e6 * this.bili;
            this.minDay = Math.round(b / 864e5);
            var e, f, g = [],
            h = {
                0 : "1",
                1 : "2",
                2 : "3",
                3 : "4",
                4 : "5",
                5 : "6",
                6 : "7",
                7 : "8",
                8 : "9",
                9 : "10",
                10 : "11",
                11 : "12"
            };
            c = c / 7 * 6;
            var i = 7;
            this.tag && (b = a - 5184e6, c = 864e6, this.minDay = Math.round(b / 864e5), this.bili = 1, i = 6),
            5184e6 > a - b && (b = a - 44064e5, c = 864e6, this.minDay = Math.round(b / 864e5), this.bili = 1, i = 6);
            for (var j = 0; i > j; j++) b += c,
            e = new Date(b),
            f = d(h[e.getMonth()]) + "/" + d(e.getDate()),
            g.push(f);
            return g
        },
        dashedLineTo: function(a, b, c, d, e, f) {
            "undefined" == typeof f && (f = 5);
            var g = d - b,
            h = e - c,
            i = Math.floor(Math.sqrt(g * g + h * h)),
            j = 0 >= f ? i: i / f,
            k = h / i * f,
            l = g / i * f;
            a.beginPath();
            for (var m = 0; j > m; m++) m % 2 ? a.lineTo(b + m * l, c + m * k) : a.moveTo(b + m * l, c + m * k);
            a.stroke()
        },
        getObjXY: function() {
            for (var a, b = this.getYdata().Ypx, c = this.getXdata().Xpx, d = this.getYdata().Yprice, e = this.getXdata().Xdate, f = [], g = 0; g < c.length; g++) a = {
                x: c[g],
                y: b[g],
                p: d[g],
                d: e[g]
            },
            f.push(a);
            return f
        },
        drawCanvasBase: function(a, b) {
            var c = this.wrap.find(".TK-canvas-sub-base")[0],
            d = this.fixs.beginXY,
            e = 2 * (210 + d),
            f = 760,
            h = this.warpNum,
            i = this.fixs.ySetpPx;
            if (3 === this.warpNum && (h = 4), b && (h = 3, i = 70), c.getContext) {
                var j = c.getContext("2d"),
                k = 108;
                j.lineWidth = 2,
                j.strokeStyle = "#e6e6e6";
                for (var l = 0; h >= l; l++) j.beginPath(),
                j.moveTo(d - 8, l * i * 2 + d),
                j.lineTo(f - 8, l * i * 2 + d),
                j.stroke();
                j.beginPath(),
                j.moveTo(d - 4, d),
                j.lineTo(d - 4, e - 3),
                j.stroke();
                for (var m = 0; 6 >= m; m++) j.beginPath(),
                j.moveTo(k - 8, d),
                j.lineTo(k - 8, e - 3),
                k += 108.6,
                j.stroke();
                j.save();
                var n, o = this.getYdata().Ypx,
                p = this.getXdata().Xpx;
                if (this.tag) {
                    p = 118;
                    for (var q = 0; 31 > q; q++) j.beginPath(),
                    30 === q || 0 === q ? j.arc(p, o[0], 5, 0, 2 * Math.PI, !1) : j.arc(p, o[0], 3, 0, 2 * Math.PI, !1),
                    30 === q ? j.fillStyle = "#23a839": j.fillStyle = "#ff3b30",
                    j.fill(),
                    p += 21;
                    j.font = "24px Arial",
                    j.fillStyle = "#666",
                    this.max >= 1e5 ? j.fillText("¥" + g(this.max, !0), 760, 2 * (this.getYdata().nowY + 5)) : j.fillText("¥" + g(this.max, !0).toFixed(2), 760, 2 * (this.getYdata().nowY + 5)),
                    j.globalCompositeOperation = "source-atop"
                } else if (b) {
                    for (n = 0; n < o.length; n++) j.beginPath(),
                    j.arc(p[n], o[n], 2, 0, 2 * Math.PI, !1),
                    j.fillStyle = "#ff3b30",
                    j.fill(),
                    j.lineWidth = 4,
                    j.strokeStyle = "#ff3b30",
                    j.beginPath(),
                    j.moveTo(p[n], o[n]),
                    j.lineTo(p[n + 1], o[n + 1]),
                    j.stroke();
                    this.dashedLineTo(j, 12, o[0], p[0], o[0], 4),
                    j.strokeStyle = "#ff3b30",
                    j.font = "24px Arial",
                    j.fillStyle = "#666",
                    this.max >= 1e5 ? j.fillText("¥" + g(this.max, !0), 760, 2 * (this.getYdata().nowY + 5)) : j.fillText("¥" + g(this.max, !0).toFixed(2), 760, 2 * (this.getYdata().nowY + 5))
                } else {
                    for (n = 0; n < o.length; n++) j.beginPath(),
                    j.arc(p[n], o[n], 2, 0, 2 * Math.PI, !1),
                    j.fillStyle = "#ff3b30",
                    j.fill(),
                    j.lineWidth = 4,
                    j.strokeStyle = "#ff3b30",
                    j.beginPath(),
                    j.moveTo(p[n], o[n]),
                    j.lineTo(p[n + 1], o[n + 1]),
                    j.stroke();
                    this.dashedLineTo(j, 12, o[0], p[0], o[0], 4),
                    this.getYdata().isinY ? j.fillStyle = "#ff3b30": this.getYdata().isinX ? j.fillStyle = "#23a839": j.fillStyle = "#999999",
                    j.font = "24px tahoma",
                    j.fillText(" 现价", 760, 2 * (this.getYdata().nowY + 8)),
                    j.font = "24px tahoma",
                    this.nPrice >= 1e5 ? j.fillText("¥" + g(this.nPrice, !0), 765, 2 * (this.getYdata().nowY + 23)) : j.fillText("¥" + g(this.nPrice, !0).toFixed(2), 765, 2 * (this.getYdata().nowY + 23)),
                    j.font = "24px tahoma",
                    j.fillStyle = "#23a839",
                    this.getYdata().isinX || j.fillText("¥" + g(this.min, !0).toFixed(2), 2 * (this.getYdata().minX - 10), 2 * (this.getYdata().minY + 18)),
                    this.position_Max_Min(j, 2 * this.getYdata().minX, 2 * this.getYdata().minY, "#23a839"),
                    j.font = "24px tahoma",
                    j.fillStyle = "#ff3b30",
                    this.getYdata().isinY || j.fillText("¥" + g(this.max, !0).toFixed(2), 2 * (this.getYdata().maxX - 10), 2 * (this.getYdata().maxY - 10)),
                    this.position_Max_Min(j, 2 * this.getYdata().maxX, 2 * this.getYdata().maxY, "#ff3b30"),
                    j.globalCompositeOperation = "source-atop"
                }
            }
        },
        position_Max_Min: function(a, b, c, d) {
            a.beginPath(),
            a.moveTo(b, c),
            a.arc(b, c, 12, 0, 2 * Math.PI, !1),
            a.closePath(),
            a.fillStyle = d,
            a.fill(),
            a.beginPath(),
            a.moveTo(b, c),
            a.arc(b, c, 10, 0, 2 * Math.PI, !1),
            a.closePath(),
            a.fillStyle = "#fff",
            a.fill(),
            a.beginPath(),
            a.moveTo(b, c),
            a.arc(b, c, 6, 0, 2 * Math.PI, !1),
            a.closePath(),
            a.fillStyle = d,
            a.fill()
        },
        drawCanvasLayout: function(a) {
            var b = this,
            c = this.wrap.find(".TK-canvas-sub-layout")[0];
            if (c.getContext) {
                var d, e, f = c.getContext("2d"),
                g = function() {
                    var a = b.getObjXY();
                    i(c).on("mousemove",
                    function(g) {
                        d = g.pageX || g.clientX || 0,
                        e = g.pageY || g.clientY || 0,
                        d -= i(c).offset().left,
                        e -= i(c).offset().top,
                        f.clearRect(0, 0, c.width, c.height),
                        b.msgBox.hide(),
                        i(a).each(function(c, e) {
                            d >= e.x / 2 - 2 && a[c + 1] && d <= a[c + 1].x / 2 - 2 && (b.msgBox.css({
                                left: d - 16,
                                top: e.y / 2 - 46
                            }).show(), b.msgBox.html('<div class="TK-qutu-sub-msg-wrap"><p>日期：' + b.pxTodata(d) + "</p><p>价格：<span>&yen " + e.p + "</span></p></div>"), f.beginPath(), f.arc(2 * d, e.y, 8, 0, 2 * Math.PI, !1), f.fillStyle = "#ff3b30", f.fill())
                        })
                    })
                };
                g()
            }
        },
        pxTodata: function(a) {
            var b, c = 864e5 * (a / this.matchX * this.bili + this.minDay),
            e = {
                0 : "1",
                1 : "2",
                2 : "3",
                3 : "4",
                4 : "5",
                5 : "6",
                6 : "7",
                7 : "8",
                8 : "9",
                9 : "10",
                10 : "11",
                11 : "12"
            },
            f = new Date(c);
            return b = f.getFullYear() + "/" + d(e[f.getMonth()]) + "/" + d(f.getDate())
        },
        drawYaxi: function() {
            for (var a = this.yAxis,
            b = "",
            c = 0; c < a.length; c++) b += '<span class="TK-qutu-sub-price-item TK-qutu-sub-price-item-' + this.yAxisClass + '">',
            b += "" === g(a[c]) ? 0 : g(a[c]),
            b += "</span>";
            i(".TK-qutu-sub-price").html(b)
        },
        drawXaxi: function() {
            var a = this.xAxis,
            b = "";
            i.each(a,
            function(a, c) {
                b += '<span class="TK-qutu-sub-data-item">' + c + "</span>"
            }),
            i(".TK-qutu-sub-data").html(b)
        },
        refLoop: function(a, b) {
            for (var c = b.length; c--;) if (Math.abs(b[c].price - a) > 10) return c;
            return b.length - 1
        }
    },
    c.exports = {
        init: function() {
            o.qutuViewDeferred.promise().then(function() {
                var a = m["juzi/juzi.qutu"];
                o.$el.find(".TTS-qutu-wrap").empty().append(a({})),
                i.getJSON("//www.gmf.com/priceHistory.php?itemId=" + l.item.getID() + "&website=" + j.webSite + "&price=" + q + "&callback=?",
                function(a) {
                    p.trigger("tk.priceHistory", [a])
                })
            })
        }
    }
}),
__tk__define("views/lds/main", ["../../lib/jquery", "../../host", "../../utils", "../../product", "../../lib/dragdrop", "../../models/models", "../../models/taobao", "../../models/jsonp", "../prefix", "../../lib/underscore", "../../models/api", "../../utils/env", "../../models/b2c", "../../models/remind", "../../models/lds", "../../models/juxiao", "../../models/tuan", "../../templates", "../alimama", "../../lib/jquery.tmpl"],
function(require, exports, module) {
    function side_log(a, b) {
        var c, d = 0,
        e = 0,
        f = 0,
        g = 0;
        $.each(a.recomList,
        function(a, b) {
            b.clickUrl.match(/showkc/) ? f++:b.clickUrl.match(/show\-3/) ? g++:b.clickUrl.match(/website\=(taobao|tmall)/) ? d++:e++
        }),
        utils.kLog({
            systemName: "side-show",
            showkc: f,
            media: g,
            recomt: d,
            recomb: e,
            pos: b,
            ref: encodeURIComponent(document.referrer)
        }),
        $(".TK-lds-item").on("click",
        function() {
            c = $(this).find("a").attr("href").match(/showkc/) ? 1 : $(this).find("a").attr("href").match(/show\-3/) ? 2 : $(this).find("a").attr("href").match(/website\=(taobao|tmall)/) ? 3 : 4,
            utils.kLog({
                systemName: "side-click",
                pos: b,
                type: c,
                ref: encodeURIComponent(document.referrer)
            })
        })
    }
    function Render(a) {
        return "undefined" != typeof a.recomList && a.recomList[0] ? (a.recomList.length > 9 && (a.recomList.length = 9), this.length = a.recomList.length, this.total, this.sTyp = a.resultType || "", this.init(a), void side_log(a, 1)) : (html = '<div id="TK-lds-default"></div>', $("#J-TK-lds-bd-con").append(html), utils.stat("ReNoresult", !0), !1)
    }
    function showAlimama(a) {
        var b = templates["lds.box"];
        $(b).appendTo(body),
        (host.isTaobao || host.isTM) && $(".TK-lds-wrap").addClass("TK-lds-wrap-ali"),
        "taobao" === a ? $(".TK-lds-bd").empty().append(alimama.tdLds) : "b2c" === a && ($(".TK-lds-wrap").hide(), $(".TK-lds-bd").empty().append(alimama.lds), setTimeout(function() {
            "" !== $(".TK-lds-bd").html() && $(".TK-lds-wrap").show()
        },
        100)),
        $("#J-TK-lds-prev, #J-TK-lds-next").css("display", "none");
        var c = $(".TK-lds-icon"),
        d = document.getElementById("J-TK-lds-con"),
        e = document.getElementById("J-TK-lds-slide"),
        f = new Drag(d, document.getElementById("J-TK-lds-hd")),
        g = new Drag(d, c[0], !0);
        $(".TK-lds-close").on("click",
        function() {
            $("#J-TK-lds-slide").animate({
                height: 0
            },
            "fast", "swing",
            function() {
                e.style.display = "none",
                d.style.width = "40px",
                c.show(),
                c.css({
                    "margin-left": "0"
                })
            })
        }),
        c.on("click",
        function() {
            var a = f._obj,
            b = g._divStart,
            h = Math.abs;
            0 === h(a.offsetLeft - b.x) && 0 === h(a.offsetTop - b.y) && (e.style.display = "block", d.style.width = "76px", c.hide(), $("#J-TK-lds-slide").animate({
                height: 472
            },
            "fast", "swing",
            function() {
                parseInt(d.style.left, 10) < 0 && (d.style.left = 0)
            }))
        }),
        utils.statLog_one({
            systemName: "ttk_alimama_pv",
            ref: location.href,
            source: "alimama",
            place: "findAndFind",
            type: "2"
        })
    }
    function init() {
        host.isTBDetail || host.isTMDetail || host.isJuDetail ? (body.one({
            "lds.sync.success": function(a, b) {
                new Render(b)
            }
        }), model.lds("", "")) : showAlimama(host.isAMXDetail ? "taobao": "b2c")
    }
    function LdsSlide(a, b) {
        var c = a;
        this.obj = c,
        b ? this.slidePath = 76 : this.slidePath = 112,
        this.init()
    }
    function Drag(a, b, c) {
        var d = this;
        this._obj = a,
        this._tag = b,
        this._mouseStart = {},
        this._divStart = {},
        this.clientWidth = document.body.clientWidth,
        this.flag = !1,
        this.icon = c,
        this._tag.onmousedown = function(a) {
            d._startDrag(a)
        }
    }
    var $ = require("../../lib/jquery"),
    host = require("../../host"),
    utils = require("../../utils"),
    Product = require("../../product"),
    Dragdrop = require("../../lib/dragdrop"),
    model = require("../../models/models"),
    templates = require("../../templates"),
    alimama = require("../alimama"),
    body = $("body"),
    isDraged = !1;
    require("../../lib/jquery.tmpl"),
    Render.prototype = {
        init: function(data) {
            var tmpl = templates["lds.box"],
            _this = this;
            $(tmpl).appendTo(body);
            var length = data.recomList.length,
            total;
            switch (!0) {
            case 0 === length: total = 0;
                break;
            case 4 > length: total = 1;
                break;
            case 7 > length: total = 2;
                break;
            case 10 > length: total = 3;
                break;
            case 13 > length: total = 4
            }
            this.total = total;
            var html0 = "<ul>",
            html1 = "<ul>",
            html2 = "<ul>",
            html3 = "<ul>";
            if (total) for (var i in data.recomList) if (/^http:\/\/img.*\.taotaosou.cn.*$/.test(data.recomList[i].ttsPicUrl)) switch (!0) {
            case 3 > i: html0 += '<li class="TK-lds-item"><a title="' + data.recomList[i].title + '" href="' + data.recomList[i].clickUrl + '" target="_blank" class="TK-lds-link" data-log="{"price":"' + data.recomList[i].price + '", "promoPrice":"' + data.recomList[i].promoPrice + '", "sourceId":"' + data.recomList[i].sourceId + '"}" data-stat="' + data.recomList[i].stat + '"><img src="' + data.recomList[i].ttsPicUrl + '" alt=""/></a><p class="TK-lds-price"><span>&yen</span>' + data.recomList[i].promoPrice + "</p></li>";
                break;
            case 6 > i: html1 += '<li class="TK-lds-item"><a title="' + data.recomList[i].title + '" href="' + data.recomList[i].clickUrl + '" target="_blank" class="TK-lds-link" data-stat="' + data.recomList[i].stat + '"><img src="' + data.recomList[i].ttsPicUrl + '" alt=""/></a><p class="TK-lds-price"><span>&yen</span>' + data.recomList[i].promoPrice + "</p></li>";
                break;
            case 9 > i: html2 += '<li class="TK-lds-item"><a title="' + data.recomList[i].title + '" href="' + data.recomList[i].clickUrl + '" target="_blank" class="TK-lds-link" data-stat="' + data.recomList[i].stat + '"><img src="' + data.recomList[i].ttsPicUrl + '" alt=""/></a><p class="TK-lds-price"><span>&yen</span>' + data.recomList[i].promoPrice + "</p></li>";
                break;
            case 12 > i: html3 += '<li class="TK-lds-item"><a title="' + data.recomList[i].title + '" href="' + data.recomList[i].clickUrl + '" target="_blank" class="TK-lds-link" data-stat="' + data.recomList[i].stat + '"><img src="' + data.recomList[i].ttsPicUrl + '" alt=""/></a><p class="TK-lds-price"><span>&yen</span>' + data.recomList[i].promoPrice + "</p></li>"
            } else switch (!0) {
            case 3 > i: html0 += '<li class="TK-lds-item"><a title="' + data.recomList[i].title + '" href="' + data.recomList[i].clickUrl + '" target="_blank" class="TK-lds-link" data-log="{"price":"' + data.recomList[i].price + '", "promoPrice":"' + data.recomList[i].promoPrice + '", "sourceId":"' + data.recomList[i].sourceId + '"}" data-stat="' + data.recomList[i].stat + '"><img src="' + data.recomList[i].ttsPicUrl + '" alt=""/></a><p class="TK-lds-price"><span>&yen</span>' + data.recomList[i].promoPrice + "</p></li>";
                break;
            case 6 > i: html1 += '<li class="TK-lds-item"><a title="' + data.recomList[i].title + '" href="' + data.recomList[i].clickUrl + '" target="_blank" class="TK-lds-link" data-stat="' + data.recomList[i].stat + '"><img src="' + data.recomList[i].ttsPicUrl + '" alt=""/></a><p class="TK-lds-price"><span>&yen</span>' + data.recomList[i].promoPrice + "</p></li>";
                break;
            case 9 > i: html2 += '<li class="TK-lds-item"><a title="' + data.recomList[i].title + '" href="' + data.recomList[i].clickUrl + '" target="_blank" class="TK-lds-link" data-stat="' + data.recomList[i].stat + '"><img src="' + data.recomList[i].ttsPicUrl + '" alt=""/></a><p class="TK-lds-price"><span>&yen</span>' + data.recomList[i].promoPrice + "</p></li>";
                break;
            case 12 > i: html3 += '<li class="TK-lds-item"><a title="' + data.recomList[i].title + '" href="' + data.recomList[i].clickUrl + '" target="_blank" class="TK-lds-link" data-stat="' + data.recomList[i].stat + '"><img src="' + data.recomList[i].ttsPicUrl + '" alt=""/></a><p class="TK-lds-price"><span>&yen</span>' + data.recomList[i].promoPrice + "</p></li>"
            }
            html0 += "</ul>",
            html1 += "</ul>",
            html2 += "</ul>",
            html3 += "</ul>";
            for (var html = "",
            html_li = "",
            iii = 0; total > iii; iii++) html += eval("html" + iii);
            this.html = html,
            this.renderBox(),
            utils.stat("Redis", !0),
            utils.statLog_one({
                systemName: "ttk_recommend_dis_log",
                sTyp: _this.sTyp,
                sPid: Product.item.getID(),
                sPric: "",
                sProPric: "",
                cid: Product.item.getCid(),
                Num: this.total,
                pNum: 0,
                rNum: this.length,
                rList: "",
                ptype: host.pageType,
                tR: ((new Date).getTime() - window.TTS_initTime) / 1e3
            }),
            $(".media_bubble_logo_new").on("click",
            function() {
                utils.statLog_yx({
                    source: "guess"
                })
            })
        },
        renderBox: function() {
            function a(a) {
                a && 1 !== a.nodeType || (window.getComputedStyle ? h = window.getComputedStyle(a, null).getPropertyValue("position").toLowerCase() : a.currentStyle && (h = a.currentStyle.position.toLowerCase()), g !== h && (g = h, "fixed" === h ? (b(), $(e).removeClass("page-left").addClass("page-right")) : (b(), $(e).removeClass("page-right").addClass("page-left"))))
            }
            function b() {
                i.slideBox.style.display = "block",
                i.slideCon.style.width = "158px",
                $("#J-TK-lds-slide").height(472),
                i.icon.hide(),
                parseInt(i.slideCon.style.left, 10) < 0 && (i.slideCon.style.left = 0)
            }
            var c = $("#J-TK-lds-bd-con"),
            d = $(".TK-lds-icon"),
            e = document.getElementById("J-TK-lds-con"),
            f = document.getElementById("J-TK-lds-slide");
            $(this.html).appendTo(c);
            var g, h, i = this; (host.isTBDetail || host.isTMDetail) && ($(".TK-lds-wrap").addClass("TK-tb-tm-lds-wrap"), $(window).on("scroll",
            function(b) {
                if (!isDraged) {
                    var c;
                    document.getElementById("J_TabBarWrap") ? c = document.getElementById("J_TabBarWrap") : document.getElementById("J_TabBarBox") && (c = document.getElementById("J_TabBarBox")),
                    a(c)
                }
            }), $(e).addClass("page-left")),
            new LdsSlide(e),
            this.icon = d,
            this.slideBox = f,
            this.slideCon = e,
            utils.isJuzi() ? this.renderEventJuZi(e) : this.renderEvent(e)
        },
        renderEvent: function(a) {
            var b = this,
            c = new Drag(a, document.getElementById("J-TK-lds-hd")),
            d = new Drag(a, this.icon[0], !0);
            $(".TK-lds-close").on("click",
            function() {
                $("#J-TK-lds-slide").animate({
                    height: 0
                },
                "fast", "swing",
                function() {
                    b.slideBox.style.display = "none",
                    b.slideCon.style.width = "40px",
                    b.icon.show(),
                    "" === b.slideCon.style.left ? b.icon.css({
                        "margin-left": "0"
                    }) : b.icon.css({
                        "margin-left": "118px"
                    }),
                    utils.stat("Reboxdis", !0)
                })
            }),
            this.icon.on("click",
            function() {
                var a = c._obj,
                e = d._divStart,
                f = Math.abs;
                0 === f(a.offsetLeft - e.x) && 0 === f(a.offsetTop - e.y) && (b.slideBox.style.display = "block", b.slideCon.style.width = "158px", b.icon.hide(), $("#J-TK-lds-slide").animate({
                    height: 472
                },
                "fast", "swing",
                function() {
                    utils.stat("Reboxclick", !0),
                    parseInt(b.slideCon.style.left, 10) < 0 && (b.slideCon.style.left = 0)
                }))
            }),
            $("#J-TK-lds-slide").on("click", ".TK-lds-link",
            function() {
                utils.stat("Reclick", !0),
                utils.statLog_one({
                    systemName: "ttk_recommend_clikc_log",
                    sTyp: b.sTyp,
                    sPid: Product.item.getID(),
                    sPric: "",
                    sProPric: "",
                    cType: $(this).data().stat,
                    cid: Product.item.getCid(),
                    pid: "",
                    price: "",
                    cNum: $(this).index() + 1,
                    ptype: host.pageType
                }),
                $(this).attr("href").match(/\/\/show-3\.mediav\.com\//) && utils.statLog_one({
                    systemName: "ttk_flow",
                    cType: 3,
                    ref: location.host,
                    url: encodeURIComponent($(this).attr("href"))
                })
            }),
            $("#J-TK-lds-btn").on("click", "span",
            function() {
                utils.stat("ReNext", !0),
                utils.stat("Redis", !0),
                utils.statLog_one({
                    systemName: "ttk_recommend_dis_log",
                    sTyp: b.sTyp,
                    sPid: Product.item.getID(),
                    sPric: "",
                    sProPric: "",
                    cid: Product.item.getCid(),
                    Num: this.total,
                    pNum: $(this).index() + 1,
                    rNum: this.length,
                    rList: "",
                    ptype: host.pageType
                })
            }),
            $("#J-TK-lds-prev, #J-TK-lds-next").on("click",
            function() {
                utils.stat("ReNext", !0),
                utils.stat("Redis", !0)
            })
        },
        renderEventJuZi: function(a) {
            var b = this;
            new Drag(a, document.getElementById("J-TK-lds-hd"));
            $(".TK-lds-close").on("click",
            function() {
                $("#J-TK-lds-slide").animate({
                    height: 0
                },
                "fast", "swing",
                function() {
                    b.slideBox.style.display = "none",
                    utils.stat("Reboxdis", !0)
                })
            }),
            $("#J-TK-lds-slide").on("click", ".TK-lds-link",
            function() {
                utils.stat("Reclick", !0),
                utils.statLog_one({
                    systemName: "ttk_recommend_clikc_log",
                    sTyp: b.sTyp,
                    sPid: Product.item.getID(),
                    sPric: "",
                    sProPric: "",
                    cType: $(this).data().stat,
                    cid: Product.item.getCid(),
                    pid: "",
                    price: "",
                    cNum: $(this).index() + 1,
                    ptype: host.pageType
                })
            }),
            $("#J-TK-lds-btn").on("click", "span",
            function() {
                utils.stat("ReNext", !0),
                utils.stat("Redis", !0),
                utils.statLog_one({
                    systemName: "ttk_recommend_dis_log",
                    sTyp: b.sTyp,
                    sPid: Product.item.getID(),
                    sPric: "",
                    sProPric: "",
                    cid: Product.item.getCid(),
                    Num: this.total,
                    pNum: $(this).index() + 1,
                    rNum: this.length,
                    rList: "",
                    ptype: host.pageType
                })
            }),
            $("#J-TK-lds-prev, #J-TK-lds-next").on("click",
            function() {
                utils.stat("ReNext", !0),
                utils.stat("Redis", !0)
            })
        },
        renderEventJuxiao: function(a) {
            var b = this,
            c = !0,
            d = new Drag(a, document.getElementById("J-TK-lds-hd")),
            e = new Drag(a, this.icon[0], !0);
            b.slideBox.style.display = "none",
            b.icon.show(),
            $(".TK-lds-close").on("click",
            function() {
                c = !1,
                b.slideBox.style.display = "none",
                b.slideCon.style.width = "40px",
                b.icon.show(),
                "" === b.slideCon.style.left ? b.icon.css({
                    "margin-left": "0"
                }) : b.icon.css({
                    "margin-left": "118px"
                }),
                utils.stat("Reboxdis", !0)
            }),
            this.icon.on("click",
            function() {
                var a = d._obj,
                f = e._divStart,
                g = Math.abs;
                c || (b.slideBox.style.display = "block", b.slideCon.style.width = "158px", $("#J-TK-lds-slide").height(472), b.icon.hide(), utils.stat("Reboxclick", !0), parseInt(b.slideCon.style.left, 10) < 0 && (b.slideCon.style.left = 0), c = !0),
                0 === g(a.offsetLeft - f.x) && 0 === g(a.offsetTop - f.y) && (b.slideBox.style.display = "block", b.slideCon.style.width = "158px", $("#J-TK-lds-slide").height(472), b.icon.hide(), utils.stat("Reboxclick", !0), parseInt(b.slideCon.style.left, 10) < 0 && (b.slideCon.style.left = 0))
            }),
            $(".TK-lds-close").trigger("click"),
            $("#J-TK-lds-slide").on("click", ".TK-lds-link",
            function() {
                utils.stat("Reclick", !0),
                utils.statLog_one({
                    systemName: "ttk_recommend_clikc_log",
                    sTyp: b.sTyp,
                    sPid: Product.item.getID(),
                    sPric: "",
                    sProPric: "",
                    cType: $(this).data().stat,
                    cid: Product.item.getCid(),
                    pid: "",
                    price: "",
                    cNum: $(this).index() + 1,
                    ptype: host.pageType
                })
            }),
            $("#J-TK-lds-btn").on("click", "span",
            function() {
                utils.stat("ReNext", !0),
                utils.stat("Redis", !0),
                utils.statLog_one({
                    systemName: "ttk_recommend_dis_log",
                    sTyp: b.sTyp,
                    sPid: Product.item.getID(),
                    sPric: "",
                    sProPric: "",
                    cid: Product.item.getCid(),
                    Num: this.total,
                    pNum: $(this).index() + 1,
                    rNum: this.length,
                    rList: "",
                    ptype: host.pageType
                })
            }),
            $("#J-TK-lds-prev, #J-TK-lds-next").on("click",
            function() {
                utils.stat("ReNext", !0),
                utils.stat("Redis", !0)
            });
            var f;
            $(window).on("scroll",
            function() {
                f = $("body").scrollTop() || $("html").scrollTop(),
                f > 700 ? b.icon.trigger("click") : $(".TK-lds-close").trigger("click")
            })
        }
    },
    LdsSlide.prototype = {
        $: function(a) {
            return "string" == typeof a ? document.getElementById(a) : a
        },
        $$: function(a, b) {
            return (b || document).getElementsByTagName(a)
        },
        hasClass: function(a, b) {
            return a.className.match(new RegExp("(\\s|^)" + b + "(\\s|$)"))
        },
        addClass: function(a, b) {
            var c = this;
            c.hasClass(a, b) || ("" === a.className.replace(/\s/g, "") ? a.className = b: a.className += " " + b)
        },
        removeClass: function(a, b) {
            var c = this;
            c.hasClass(a, b) && (a.className = a.className.replace(new RegExp("(\\s*|^)" + b + "(\\s*|$)"), " "))
        },
        addEvent: function(a, b, c) {
            a.addEventListener ? a.addEventListener(b, c, !1) : a.attachEvent && a.attachEvent("on" + b,
            function() {
                c.call(a)
            })
        },
        init: function() {
            function a() {
                i = setInterval(function() {
                    e >= m - 1 ? e = 0 : ++e,
                    b()
                },
                5e3)
            }
            function b() {
                for (var a = d.$$("span", d.$("J-TK-lds-btn")), b = 0, f = a.length; f > b; b++) d.removeClass(a[b], "TK-lds-active");
                d.addClass(a[e], "TK-lds-active"),
                c(g, 112 * -e)
            }
            function c(a, b) {
                clearInterval(j),
                j = setInterval(function() {
                    var c = (b - a.offsetLeft) / 5;
                    c = c > 0 ? Math.ceil(c) : Math.floor(c),
                    a.offsetLeft == b ? clearInterval(j) : a.style.left = c + a.offsetLeft + "px"
                },
                30)
            }
            var d = this,
            e = 0,
            f = this.obj,
            g = d.$("J-TK-lds-bd-con"),
            h = d.$$("ul", g),
            i = null,
            j = null;
            g.style.width = 112 * h.length + "px";
            var k = document.getElementById("J-TK-lds-prev"),
            l = document.getElementById("J-TK-lds-next"),
            m = h.length,
            n = document.createDocumentFragment(),
            o = document.createElement("div");
            if (o.className = "TK-lds-btn", o.id = "J-TK-lds-btn", o.style.width = 15 * m + "px", !(1 >= m)) {
                d.addEvent(k, "click",
                function() {--e,
                    0 > e && (e = m - 1),
                    e > m - 1 && (e = 0),
                    b()
                }),
                d.addEvent(l, "click",
                function() {++e,
                    0 > e && (e = m - 1),
                    e > m - 1 && (e = 0),
                    b()
                });
                for (var p = 0; m > p; p++) {
                    var q = document.createElement("span");
                    0 === p && (q.className = "TK-lds-active"),
                    q.innerText = p,
                    o.appendChild(q),
                    function(a, c) {
                        d.addEvent(c, "click",
                        function() {
                            clearInterval(j),
                            e = a,
                            b()
                        })
                    } (p, q)
                }
                d.addEvent(f, "mouseover",
                function() {
                    clearInterval(i),
                    i = null
                }),
                d.addEvent(f, "mouseout",
                function() {
                    a()
                }),
                a(),
                n.appendChild(o),
                document.getElementById("J-TK-lds-slide").appendChild(n)
            }
        }
    },
    Drag.prototype._startDrag = function(a) {
        var b = this,
        c = a || event;
        this._mouseStart.x = c.clientX,
        this._mouseStart.y = c.clientY,
        this._divStart.x = this._obj.offsetLeft,
        this._divStart.y = this._obj.offsetTop,
        this._obj.setCapture ? (this._tag.onmousemove = function(a) {
            b._doDrag(a)
        },
        this._tag.onmouseup = function(a) {
            b._stopDrag(a)
        },
        this._tag.ondblclick = function(a) {
            b._stopDrag(a)
        },
        this._tag.setCapture()) : (this._doDrags = function(a) {
            b._doDrag(a)
        },
        this._stopDrags = function(a) {
            b._stopDrag(a)
        },
        this._stopDragsDbl = function(a) {
            b.flag = !0,
            document.removeEventListener("mousemove", b._doDrags, !0),
            b._stopDrag(a)
        },
        document.addEventListener("mousemove", this._doDrags, !0), document.addEventListener("mouseup", this._stopDrags, !0), document.addEventListener("dblclick", this._stopDragsDbl, !0))
    },
    Drag.prototype._doDrag = function(a) {
        $("#J-TK-lds-con").removeClass("page-left").removeClass("page-right"),
        isDraged = !0;
        var b = a || event,
        c = b.clientX - this._mouseStart.x + this._divStart.x,
        d = b.clientY - this._mouseStart.y + this._divStart.y;
        this.icon ? ( - 88 >= c && (c = -118), c > this.clientWidth - this._obj.offsetWidth - 148 && (c = this.clientWidth - this._obj.offsetWidth - 118)) : (30 >= c && (c = 0), c > this.clientWidth - this._obj.offsetWidth - 30 && (c = this.clientWidth - this._obj.offsetWidth)),
        0 >= d && (d = 0),
        this._obj.style.left = c + "px",
        this._obj.style.top = d + "px"
    },
    Drag.prototype._stopDrag = function(a) {
        this._tag.releaseCapture ? (this._tag.onmousemove = null, this._tag.onmouseup = null, this._tag.releaseCapture()) : (document.removeEventListener("mousemove", this._doDrags, !0), document.removeEventListener("mouseup", this._stopDrags, !0), document.removeEventListener("dblclick", this._stopDrags, !0), this._doDrags = this._stopDrags = null)
    },
    module.exports = {
        init: init
    }
}),
__tk__define("views/prefix", ["../lib/jquery"],
function(a, b, c) {
    var d = a("../lib/jquery"),
    e = "TK-";
    c.exports = {
        app: "TK-",
        btn: "TK-button",
        logo: "TK-logo-icon",
        $id: function(a) {
            return d("#" + e + a)
        },
        $cls: function(a) {
            return d("." + e + a)
        }
    }
}),
__tk__define("views/remind/main", ["../../lib/jquery", "../../utils", "../../host", "../../templates.jst", "./qutu", "../../lib/underscore", "../../product", "../../utils/tts_stat", "./under"],
function(a, b, c) {
    function d() {
        if ("" === g.getContainer()) return ! 1;
        var b = h["bijia/sub.remind"],
        c = h["bijia/taobao.qutu"];
        f(b({
            list: "cc"
        })).insertAfter(g.getContainer()),
        f(".TTS-qutu-wrap").append(c({
            list: "cc"
        })),
        a("./qutu").init(),
        a("./under").init()
    }
    function e() {
        i.on("tk.user",
        function() {
            d()
        })
    }
    var f = a("../../lib/jquery"),
    g = a("../../utils"),
    h = a("../../templates.jst"),
    i = f("body");
    c.exports = {
        init: function() {
            e()
        }
    }
}),
__tk__define("views/remind/qutu", ["../../lib/jquery", "../../lib/underscore", "../../host", "../../utils", "../../product", "../../utils/tts_stat"],
function(a, b, c) {
    function d(a) {
        return 10 > a && (a = "0" + a.toString()),
        a
    }
    function e(a) {
        return Math.max.apply({},
        a)
    }
    function f(a) {
        return Math.min.apply({},
        a)
    }
    function g(a, b) {
        var c = a;
        return a = a.toString(),
        a.match(/\./) || (c = 0 === a ? 0 : b ? a / 100 : a / 100),
        c
    }
    function h(a, b, c) {
        this.wrap = c;
        var d = [],
        g = {
            price: o,
            time: a.currentDate
        };
        "priceHistoryList" in a && (d = a.priceHistoryList, d.push(g)),
        this.nPrice = o,
        this.nDay = new Date(a.currentDate).getTime();
        var h = {
            beginXY: 5,
            ySetpPx: 35,
            xSetpPx: 54
        };
        this.color = "#ff3b30",
        this.two_month = !0;
        var j = !1;
        this.wending = !1,
        this.tag = j,
        this.fixs = i.extend({},
        h, b),
        this.warpNum = 6,
        this.priceAndDate = d;
        var k = this.getPriceAndDate(d);
        d[0] || (j = !1, this.priceAndDate = [{
            price: this.nPrice,
            time: (new Date).getTime()
        }], k = {
            date: [(new Date).getTime()],
            price: [this.nPrice],
            parseData: [{
                price: this.nPrice,
                time: (new Date).getTime()
            }]
        },
        this.wending = !0),
        this.price = k.price,
        this.max = e(this.price),
        this.min = f(this.price),
        1 === this.price.length && this.price[0] === this.nPrice && (this.wending = !0),
        this.avg = this.getAvg(this.price),
        this.lengthSecPrice = this.price[this.price.length - 1],
        this.price[this.price.length - 2] && (this.lengthThridPrice = this.price[this.price.length - 2]),
        this.date = k.date,
        "" !== this.nPrice && (this.price.push(this.nPrice), this.date.push(this.nDay)),
        this.btn = this.wrap.siblings(".TK-mind-sub-nav").find(".TK-mind-sub-qutu"),
        this.initBtn(this.btn, j),
        (this.max !== this.nPrice || this.min !== this.nPrice) && (this.wending = !1),
        this.ySetp = this.pareSetp(this.min, this.max),
        2 === this.warpNum && (this.yAxisClass = "2", this.fixs.ySetpPx = 105),
        (j || this.wending) && (this.warpNum = 2, this.yAxisClass = "3", this.fixs.ySetpPx = 105),
        this.downYAxi = this.parseDownYAxi(this.min, this.ySetp, this.wending),
        this.yAxis = this.getYaxisData(this.ySetp, this.warpNum, this.wending),
        this.xAxis = this.getXaerx(),
        this.upYAxi = this.yAxis[0],
        this.matchY = this.fixs.ySetpPx / this.ySetp,
        this.matchX = this.fixs.xSetpPx / 10 * 1.15,
        this.drawCanvasBase(this.color, this.wending),
        this.drawCanvasLayout(this.color, this.wending),
        this.drawYaxi(),
        this.drawXaxi()
    }
    var i = a("../../lib/jquery"),
    j = (a("../../lib/underscore"), a("../../host")),
    k = a("../../utils"),
    l = a("../../product"),
    m = a("../../utils/tts_stat"),
    n = i("body"),
    o = "";
    "" !== l.item.getPrice() && (o = parseInt(l.item.getPrice(), 10)),
    h.prototype = {
        getBtnClass: function(a, b) {
            i(".J-TK-mind-sub-icon-text");
            if (b) i(".cqol .TK-mind-sub-qutu").addClass("bijia-TTS_det_pw"),
            i(".cqols .TK-mind-sub-qutu").addClass("bijia-TTS_price_pw");
            else {
                var c, d = this.refLoop(this.nPrice, this.priceAndDate);
                c = this.priceAndDate[d + 1] ? new Date(this.priceAndDate[d + 1].time).getTime() : new Date(this.priceAndDate[d].time).getTime(),
                this.nDay - c < 2592e6 && (this.lengthSecPrice = this.priceAndDate[d].price),
                this.priceAndDate[d].price === this.nPrice ? (i(".cqol .TK-mind-sub-qutu").addClass("bijia-TTS_det_pw"), i(".cqols .TK-mind-sub-qutu").addClass("bijia-TTS_price_pw"), this.wending = !0) : this.nPrice <= this.min ? (i(".cqol .TK-mind-sub-qutu").addClass("bijia-TTS_det_di"), i(".cqols .TK-mind-sub-qutu").addClass("bijia-TTS_price_di")) : this.lengthSecPrice > this.nPrice ? (i(".cqol .TK-mind-sub-qutu").addClass("bijia-TTS_det_down"), i(".cqols .TK-mind-sub-qutu").addClass("bijia-TTS_price_down")) : this.lengthSecPrice < this.nPrice ? (i(".cqol .TK-mind-sub-qutu").addClass("bijia-TTS_det_up"), i(".cqols .TK-mind-sub-qutu").addClass("bijia-TTS_price_up")) : (i(".cqol .TK-mind-sub-qutu").addClass("bijia-TTS_det_pw"), i(".cqols .TK-mind-sub-qutu").addClass("bijia-TTS_price_pw"), this.wending = !0)
            }
        },
        initBtn: function(a, b) {
            this.msgBox = this.wrap.find(".TK-qutu-sub-msg");
            var c = null,
            d = !1,
            e = a.parent().siblings(".TK-qutu-sub-warp");
            a.on("mouseenter",
            function() {
                clearTimeout(c),
                e.addClass("TK-qutu-sub-wrap-hover"),
                c = null,
                d = !0
            }),
            a.on("mouseleave",
            function() {
                c = setTimeout(function() {
                    e.removeClass("TK-qutu-sub-wrap-hover"),
                    d = !1,
                    c = null
                },
                300)
            }),
            e.on({
                mouseover: function() {
                    clearTimeout(c),
                    e.addClass("TK-qutu-sub-wrap-hover")
                },
                mouseout: function() {
                    c = setTimeout(function() {
                        e.removeClass("TK-qutu-sub-wrap-hover"),
                        k.stat("tool_curve_PV", !0),
                        m.trackLog("tool_curve_PV"),
                        d = !1,
                        c = null
                    },
                    300)
                }
            }),
            this.getBtnClass(a, b)
        },
        getAvg: function(a) {
            for (var b = a.length,
            c = 0,
            d = 0; b > d; d++) c += a[d];
            return c / b
        },
        getYdata: function() {
            for (var a, b, c, d, e, f, h, i, j, k, l, m, n, o = this,
            p = [], q = [], r = !0, s = !0, t = 0; t < this.price.length; t++) d = Math.round(this.date[t] / 864e5),
            a = Math.round((this.upYAxi - this.price[t]) * this.matchY) + (this.fixs.beginXY - 2),
            b = Math.round((d - this.minDay) * this.matchX),
            c = this.price[t],
            o.tag || t < this.price.length - 1 && (p.push(2 * a), q.push(g(c, !0))),
            p.push(2 * a),
            t === this.price.length - 1 && (h = a, m = b, n = b),
            c === this.min ? (k = t + 1, l = this.price[k], l !== this.min && r && (e = a, j = b, 10 > j && (j = parseFloat((parseFloat(this.date[k] / 864e5) - this.minDay) * this.matchX) - 4), r = !1)) : c === this.max && (k = t + 1, l = this.price[k], l !== this.max && s && (f = a, i = b, 10 > i && (i = parseFloat((parseFloat(this.date[k] / 864e5) - this.minDay) * this.matchX) - 4), s = !1)),
            q.push(g(c, !0));
            if (!o.tag) {
                var u = p.length;
                p.push(p[u - 1])
            }
            var v, w;
            return v = m === j ? !0 : !1,
            w = i === n ? !0 : !1,
            {
                Ypx: p,
                Yprice: q,
                isinX: v,
                isinY: w,
                nowY: h,
                minY: e,
                maxY: f,
                minX: j / this.bili + 6,
                maxX: i / this.bili + 6
            }
        },
        getXdata: function() {
            for (var a, b, c, e, f, g = [], h = [], i = this, j = 0; j < this.date.length; j++) e = Math.round(this.date[j] / 864e5),
            a = Math.round((e - this.minDay) * this.matchX),
            c = new Date(this.date[j]),
            b = c.getFullYear() + "/" + d(c.getMonth() + 1) + "/" + d(c.getDate()),
            i.tag || j > 0 && (g.push(2 * (a + this.fixs.beginXY - 8) / this.bili + 12), h.push(b)),
            g.push(2 * a / this.bili + 12),
            this.price[j] === this.min && (f = a + this.fixs.beginXY),
            h.push(b);
            if (!i.tag) {
                var k = g.length;
                g.push(g[k - 1] + 6)
            }
            return {
                Xpx: g,
                Xdate: h,
                minX: f + 12
            }
        },
        pareSetp: function(a, b, c) {
            var d, e = this,
            f = b - a,
            g = 100;
            d = "floor" === c ? Math.floor(f / 3 / g) * g: "ceil" === c ? Math.ceil(f / 3 / g) * g: Math.round(f / 3 / g) * g,
            0 === d && (d = 100);
            var h = function(a) {
                for (var b = "1",
                c = 1; a > c; c++) b += "0";
                return parseInt(b, 10)
            },
            i = d.toString().length,
            j = d / h(i);
            return g = Math.round(j) * h(i),
            0 === f ? g = 100 : 100 > f && (g = 50, e.warpNum = 2),
            g
        },
        parseDownYAxi: function(a, b, c) {
            return a = Math.floor(a / b) * b
        },
        nextUniq: function(a) {
            for (var b, c, d = a,
            e = [], f = 0, g = d.length; g > f; f++) b = d[f],
            c = d[f + 1],
            "undefined" != typeof c ? (new Date(b.time).getMonth() + 1 !== new Date(c.time).getMonth() + 1 || new Date(b.time).getDate() !== new Date(c.time).getDate()) && e.push(d[f]) : e.push(d[f]);
            return e
        },
        getPriceAndDate: function(a) {
            var b, c = this.nextUniq(a),
            d = [],
            e = [],
            f = [];
            if (c[0]) for (var g = 0; g < c.length; g++) b = {
                price: c[g].price,
                time: new Date(c[g].time).getTime()
            },
            d.push(b.price),
            e.push(b.time),
            f.push(b);
            else d = [this.nPrice],
            e = [(new Date).getTime() - 864e5 * this.days],
            f = [];
            return {
                price: d,
                date: e,
                parseData: f
            }
        },
        getYaxisData: function(a, b, c) {
            var d = [],
            e = a,
            f = this.downYAxi;
            2 !== this.warpNum || this.tag || (e = 100),
            2 !== this.warpNum || c || (this.max - e >= f || this.min <= f) && (f = this.min <= f ? this.downYAxi - 100 : this.downYAxi, this.warpNum = 3, this.fixs.ySetpPx = 53, d = [], this.yAxisClass = "3"),
            6 === this.warpNum && f + 5 * e - this.max <= .5 * e ? (e = 1.5 * e, e > 100 && (e = 100 * Math.ceil(e / 100)), this.ySetp = e) : 3 === this.warpNum && f + 2 * e - this.max <= .2 * e ? (e = 1.2 * e, e > 100 && (e = 100 * Math.ceil(e / 100)), this.ySetp = 100) : 2 === this.warpNum && f + e - this.max <= .1 * e && (e = 1.1 * e, e > 100 && (e = 100 * Math.ceil(e / 100)), this.ySetp = 200);
            for (var g = 0; g < this.warpNum; g++) d.unshift(f),
            f += e;
            return d
        },
        getXaerx: function() {
            this.startDate = new Date(this.date[0]).getTime(),
            this.bili = ((new Date).getTime() - this.startDate) / 5184e6;
            var a = (new Date).getTime() - 7776e5,
            b = this.startDate,
            c = 864e6 * this.bili;
            this.minDay = Math.round(b / 864e5);
            var e, f, g = [],
            h = {
                0 : "1",
                1 : "2",
                2 : "3",
                3 : "4",
                4 : "5",
                5 : "6",
                6 : "7",
                7 : "8",
                8 : "9",
                9 : "10",
                10 : "11",
                11 : "12"
            };
            c = c / 7 * 6;
            var i = 7;
            this.tag && (b = a - 5184e6, c = 864e6, this.minDay = Math.round(b / 864e5), this.bili = 1, i = 6),
            44064e5 > a - b && (b = a - 44064e5, c = 864e6 / 7 * 6, this.minDay = Math.round(b / 864e5), this.bili = 1, i = 7, this.two_month = !1);
            for (var j = 0; i > j; j++) b += c,
            e = new Date(b),
            f = d(h[e.getMonth()]) + "/" + d(e.getDate()),
            g.push(f);
            return g
        },
        dashedLineTo: function(a, b, c, d, e, f) {
            "undefined" == typeof f && (f = 5);
            var g = d - b,
            h = e - c,
            i = Math.floor(Math.sqrt(g * g + h * h)),
            j = 0 >= f ? i: i / f,
            k = h / i * f,
            l = g / i * f;
            a.beginPath();
            for (var m = 0; j > m; m++) m % 2 ? a.lineTo(b + m * l, c + m * k) : a.moveTo(b + m * l, c + m * k);
            a.stroke()
        },
        getObjXY: function() {
            for (var a, b = this.getYdata().Ypx, c = this.getXdata().Xpx, d = this.getYdata().Yprice, e = this.getXdata().Xdate, f = [], g = 0; g < c.length; g++) a = {
                x: c[g],
                y: b[g],
                p: d[g],
                d: e[g]
            },
            f.push(a);
            return f
        },
        drawCanvasBase: function(a, b) {
            var c = this.wrap.find(".TK-canvas-sub-base")[0],
            d = this.fixs.beginXY,
            e = 2 * (210 + d),
            f = 760,
            h = this.warpNum,
            i = this.fixs.ySetpPx;
            if (3 === this.warpNum && (h = 4), b && (h = 2, i = 105), c.getContext) {
                var j = c.getContext("2d"),
                k = 108;
                j.lineWidth = 2,
                j.strokeStyle = "#e6e6e6";
                for (var l = 0; h >= l; l++) j.beginPath(),
                j.moveTo(d + 4, l * i * 2 + d),
                j.lineTo(f + 6, l * i * 2 + d),
                j.stroke();
                j.beginPath(),
                j.moveTo(d + 6, d),
                j.lineTo(d + 6, e - 3),
                j.stroke();
                for (var m = 0; 6 >= m; m++) j.beginPath(),
                j.moveTo(k + 6, d),
                j.lineTo(k + 6, e - 3),
                k += 108.6,
                j.stroke();
                j.save();
                var n, o = this.getYdata().Ypx,
                p = this.getXdata().Xpx;
                if (this.tag) {
                    p = 118;
                    for (var q = 0; 31 > q; q++) j.beginPath(),
                    30 === q || 0 === q ? j.arc(p, o[0], 5, 0, 2 * Math.PI, !1) : j.arc(p, o[0], 3, 0, 2 * Math.PI, !1),
                    30 === q ? j.fillStyle = "#23a839": j.fillStyle = "#ff3b30",
                    j.fill(),
                    p += 21;
                    j.font = "24px Arial",
                    j.fillStyle = "#666",
                    this.max >= 1e5 ? j.fillText("¥" + g(this.max, !0), 770, 2 * (this.getYdata().nowY + 5)) : j.fillText("¥" + g(this.max, !0).toFixed(2), 770, 2 * (this.getYdata().nowY + 5)),
                    j.globalCompositeOperation = "source-atop"
                } else if (b) {
                    for (n = 0; n < o.length; n++) j.beginPath(),
                    j.arc(p[n], o[n], 1, 0, 2 * Math.PI, !1),
                    j.fillStyle = "#ff3b30",
                    j.fill(),
                    j.lineWidth = 3,
                    j.strokeStyle = "#ff3b30",
                    j.beginPath(),
                    j.moveTo(p[n], o[n]),
                    j.lineTo(p[n + 1], o[n + 1]),
                    j.stroke();
                    this.two_month || this.dashedLineTo(j, 12, o[0], p[0], o[0], 3),
                    j.strokeStyle = "#ff3b30",
                    j.font = "24px Arial",
                    j.fillStyle = "#666",
                    this.max >= 1e5 ? j.fillText("¥" + g(this.max, !0), 770, 2 * (this.getYdata().nowY + 5)) : j.fillText("¥" + g(this.max, !0).toFixed(2), 770, 2 * (this.getYdata().nowY + 5))
                } else {
                    for (n = 0; n < o.length; n++) j.beginPath(),
                    j.arc(p[n], o[n], 1, 0, 2 * Math.PI, !1),
                    j.fillStyle = "#ff3b30",
                    j.fill(),
                    j.lineWidth = 3,
                    j.strokeStyle = "#ff3b30",
                    j.beginPath(),
                    j.moveTo(p[n], o[n]),
                    j.lineTo(p[n + 1], o[n + 1]),
                    j.stroke();
                    this.two_month || this.dashedLineTo(j, 12, o[0], p[0], o[0], 3),
                    this.getYdata().isinY ? j.fillStyle = "#ff3b30": this.getYdata().isinX ? j.fillStyle = "#23a839": j.fillStyle = "#999999",
                    j.font = "24px tahoma",
                    j.fillText(" 现价", 770, 2 * this.getYdata().nowY),
                    j.font = "24px tahoma",
                    this.nPrice >= 1e5 ? j.fillText("¥" + g(this.nPrice, !0), 775, 2 * (this.getYdata().nowY + 15)) : j.fillText("¥" + g(this.nPrice, !0).toFixed(2), 775, 2 * (this.getYdata().nowY + 15)),
                    j.font = "24px tahoma",
                    j.fillStyle = "#23a839",
                    this.getYdata().isinX || j.fillText("¥" + g(this.min, !0).toFixed(2), 2 * (this.getYdata().minX - 4), 2 * (this.getYdata().minY + 18)),
                    this.position_Max_Min(j, 2 * this.getYdata().minX, 2 * this.getYdata().minY, "#23a839"),
                    j.font = "24px tahoma",
                    j.fillStyle = "#ff3b30",
                    this.getYdata().isinY || j.fillText("¥" + g(this.max, !0).toFixed(2), 2 * (this.getYdata().maxX - 4), 2 * (this.getYdata().maxY - 10)),
                    this.position_Max_Min(j, 2 * this.getYdata().maxX, 2 * this.getYdata().maxY, "#ff3b30"),
                    j.globalCompositeOperation = "source-atop"
                }
            }
        },
        position_Max_Min: function(a, b, c, d) {
            a.beginPath(),
            a.moveTo(b, c),
            a.arc(b, c, 10, 0, 2 * Math.PI, !1),
            a.closePath(),
            a.fillStyle = d,
            a.fill(),
            a.beginPath(),
            a.moveTo(b, c),
            a.arc(b, c, 8, 0, 2 * Math.PI, !1),
            a.closePath(),
            a.fillStyle = "#fff",
            a.fill(),
            a.beginPath(),
            a.moveTo(b, c),
            a.arc(b, c, 5, 0, 2 * Math.PI, !1),
            a.closePath(),
            a.fillStyle = d,
            a.fill()
        },
        drawCanvasLayout: function(a) {
            var b = this,
            c = this.wrap.find(".TK-canvas-sub-layout")[0];
            if (c.getContext) {
                var d, e, f = c.getContext("2d"),
                g = function() {
                    var a = b.getObjXY();
                    i(c).on("mousemove",
                    function(g) {
                        d = g.pageX || g.clientX || 0,
                        e = g.pageY || g.clientY || 0,
                        d = d - i(c).offset().left + 6,
                        e -= i(c).offset().top,
                        f.clearRect(0, 0, c.width, c.height),
                        b.msgBox.hide(),
                        i(a).each(function(c, e) {
                            d >= e.x / 2 - 2 && a[c + 1] && d <= a[c + 1].x / 2 - 2 && (b.msgBox.css({
                                left: d - 22,
                                top: e.y / 2 - 46
                            }).show(), b.msgBox.html('<div class="TK-qutu-sub-msg-wrap"><p>日期：' + b.pxTodata(d) + "</p><p>价格：<span>&yen " + e.p + "</span></p></div>"), f.beginPath(), f.arc(2 * d, e.y, 8, 0, 2 * Math.PI, !1), f.fillStyle = "#ff3b30", f.fill())
                        })
                    })
                };
                g()
            }
        },
        pxTodata: function(a) {
            var b, c = 864e5 * ((a - 6) / this.matchX * this.bili + this.minDay),
            e = {
                0 : "1",
                1 : "2",
                2 : "3",
                3 : "4",
                4 : "5",
                5 : "6",
                6 : "7",
                7 : "8",
                8 : "9",
                9 : "10",
                10 : "11",
                11 : "12"
            },
            f = new Date(c);
            return b = f.getFullYear() + "/" + d(e[f.getMonth()]) + "/" + d(f.getDate())
        },
        drawYaxi: function() {
            for (var a = this.yAxis,
            b = "",
            c = 0; c < a.length; c++) b += '<span class="TK-qutu-sub-price-item TK-qutu-sub-price-item-' + this.yAxisClass + '">',
            b += "" === g(a[c]) ? 0 : g(a[c]),
            b += "</span>";
            i(".TK-qutu-sub-price").html(b)
        },
        drawXaxi: function() {
            var a = this.xAxis,
            b = "";
            i.each(a,
            function(a, c) {
                b += '<span class="TK-qutu-sub-data-item">' + c + "</span>"
            }),
            i(".TK-qutu-sub-data").html(b)
        },
        refLoop: function(a, b) {
            for (var c = b.length; c--;) if (Math.abs(b[c].price - a) > 10) return c;
            return b.length - 1
        }
    },
    c.exports = {
        init: function() {
            var a = k.getConfig();
            a.taobao.model.qutu && (n.on("tk.priceHistory",
            function(a, b) {
                k.stat("tool_curvebutton_PV", !0),
                i(".TK-qutu-sub-warp").each(function() {
                    new h(b, {},
                    i(this))
                })
            }), i.getJSON("//www.gmf.com/priceHistory.php?itemId=" + l.item.getID() + "&website=" + j.webSite + "&price=" + o + "&callback=?",
            function(a) {
                n.trigger("tk.priceHistory", [a])
            }))
        }
    }
}),
__tk__define("views/remind/under", ["../../lib/jquery", "../../host", "../../utils", "../../templates.jst", "../../utils/tts_stat", "../../lib/underscore"],
function(a, b, c) {
    function d(a) {
        e(a)
    }
    function e(a) {
        var b = i["bijia/sub.remind.min"];
        g(".J-TK-mind-sub-under-warp").empty().append(b(a)),
        h.stat("tool_lowest_PV", !0),
        f()
    }
    function f() {
        var a = null,
        b = !1,
        c = g(".J-TK-mind-sub-under-pop"),
        d = g(".TK-mind-sub-under");
        d.on("mouseenter",
        function() {
            clearTimeout(a),
            h.stat("tool_lowest_magnify_PV", !0),
            j.trackLog("tool_lowest_magnify_PV"),
            c.addClass("TK-mind-sub-under-hover"),
            a = null,
            b = !0
        }),
        d.on("mouseleave",
        function() {
            a = setTimeout(function() {
                c.removeClass("TK-mind-sub-under-hover"),
                b = !1,
                a = null
            },
            300)
        }),
        c.on({
            mouseover: function() {
                clearTimeout(a),
                c.addClass("TK-mind-sub-under-hover")
            },
            mouseout: function() {
                a = setTimeout(function() {
                    c.removeClass("TK-mind-sub-under-hover"),
                    b = !1,
                    a = null
                },
                300)
            }
        })
    }
    var g = a("../../lib/jquery"),
    h = (a("../../host"), a("../../utils")),
    i = a("../../templates.jst"),
    j = a("../../utils/tts_stat"),
    k = g("body");
    c.exports = {
        init: function() {
            k.on("tts.bijia.min.product",
            function(a, b) {
                d(b)
            })
        }
    }
}),
__tk__define("views/render.extend", ["../lib/jquery", "../lib/underscore", "../product", "../utils", "../host", "../lib/dragdrop", "../models/models", "../models/taobao", "../models/jsonp", "./prefix", "../models/api", "../utils/env", "../models/b2c", "../models/remind", "../models/lds", "../models/juxiao", "../models/tuan", "../templates", "../pricestat", "../lib/jquery.tmpl"],
function(a, b, c) {
    function d(a) {
        if (o("#" + u.btn)[0]) return ! 1;
        var b, c, d = null,
        e = v["tbtm.detail.btn.similar"],
        f = o(q.item.target),
        g = f.offset(),
        h = {
            id: u.btn,
            cls: u.btn,
            left: g.left + f.width() / 2 - 40,
            top: g.top + f.height() - 40
        };
        b = o.tmpl(e, h).appendTo("body"),
        o(window).on("resize",
        function() {
            o("body").trigger("tkextend.resize.btn", [f, b])
        }),
        c = new r(b[0]),
        b.on({
            click: function() {
                var b = c._obj,
                d = c._divStart,
                e = Math.abs;
                0 === e(b.offsetLeft - d.x) && 0 === e(b.offsetTop - d.y) && o("body").trigger("tkextend.btn.click", [a])
            },
            mouseenter: function() {
                d && clearTimeout(d),
                d = setTimeout(function() {
                    o("body").trigger("tkextend.global.open", ["btnTouch", "button", a]),
                    z = "touch"
                },
                100)
            }
        })
    }
    function e() {
        var a = "",
        b = o("#J_PromoPrice"),
        c = o("#J_StrPriceModBox"),
        d = c[0] && b.hasClass("tb-hidden");
        return s.isTBDetail || s.isTMDetail ? s.isTMDetail && o(".tm-fcs-panel")[0] ? a = o(".tm-fcs-panel") : s.isTBDetail && o(".tb-meta")[0] ? a = o(".tb-meta") : d ? a = o("#J_StrPriceModBox") : !b[0] && o("#J_StrPriceModBox")[0] ? a = o("#J_StrPriceModBox") : b[0] && (a = b) : s.isB2CDetail ? a = o("#summary-price") : s.isYHDDetail ? a = o(".mod_detailInfo_priceSales") : s.isVjiaDetial ? a = o("#MarketPrice").parent() : s.isDDDetail ? a = o("#originalPriceTag")[0] ? o("#originalPriceTag").parents(".m_t4") : o("#d_price").parent() : s.isSuningDetail ? a = o(o("#allcuxiao")[0] ? "#allcuxiao": "#netPriceBox") : s.isVanclDetail ? a = o(document.getElementById("pricearea") ? "#pricearea": ".MSpriceArea") : s.isAMXDetail ? document.getElementById("price_feature_div") && (a = o("#price_feature_div")) : s.isMLSDetail ? a = o(".item-price-info")[0] ? o(".item-price-info") : o(".sku_meta .price").last().parent() : s.isMGJDetail ? a = o(".goods-price") : s.isVipDetail ? a = o(o(".pi-price-box")[0] ? ".pi-price-box": ".pi_price_box") : s.isGMDetail ? o(".prdprice")[0] && (a = o(".prdprice")) : s.isPaipaiDetail ? document.getElementById("promotePrice") && (a = o("#promotePrice")) : s.isJuDetail ? o(".status-banner")[0] && (a = o(".status-banner")) : s.isYixunDetail && o(".xprice")[0] && (a = o(".xprice")),
        a
    }
    function f(a) {
        var b = v["tbtm.detail.box"],
        c = o("#" + u.app + "con");
        a = a || {
            app: u.app
        },
        c.remove(),
        s.isTMDetail && (a.host = u.app + "TM-Detail"),
        o.tmpl(b, a).insertAfter(e())
    }
    function g(a, b, c) {
        var e, g, j, k, l, p = 0 === b.sameList.length && 0 === b.similarList.length,
        r = "recomList" in b && b.recomList[0],
        s = null,
        v = b.isTtsCategory,
        w = b.itemId,
        x = "";
        b.more && A(b),
        f(b),
        v && (x += "&cid=" + b.cid, "undefined" != typeof b.sex && (x += "&sex=" + b.sex)),
        d(b),
        g = o("." + u.app + "tabs-panel"),
        e = o("." + u.app + "tabs-button"),
        j = {
            btn: e.eq(0),
            container: g.eq(0)
        },
        k = {
            btn: e.eq(1),
            container: g.eq(1)
        };
        var z = o(".J-" + u.app + "re"),
        C = o("#J-" + u.app + "recon"),
        D = !1,
        E = function() {
            z.on("mouseenter",
            function() {
                if (z.attr("data-show")) D && y.stat("TabFr_Success_T", !0),
                B.trigger("tkstat.global.display", [b, "4"]);
                else {
                    t.reCom();
                    var a = function(a, b) {
                        var c = a.recomList[0];
                        if (c) {
                            D = !0;
                            var d = '<a href="${more}" class="${app}more" target="_blank" title="点击查看更多同款商品">查看更多</a>',
                            e = {
                                app: u.app,
                                more: "http://search.taotaosou.com/transfer.htm?http://tuan.taotaosou.com/?utm_medium=ttk&utm_source=" + y.site() + "_more_tuan"
                            },
                            f = document.createDocumentFragment();
                            o.each(a.recomList,
                            function(a, b) {
                                b.index = a,
                                o.extend(b, {
                                    isCom: !0
                                }),
                                h(b, f, !0)
                            }),
                            k.container.append(f),
                            "retouch" === b && B.trigger("tkstat.global.display", [a, "4"]),
                            o("#J-TK-recon .TK-detail").on("click",
                            function() {
                                B.trigger("tkstat.global.product", [a, o(this), void 0, void 0, "4"])
                            }),
                            C.find(".TK-item").on({
                                mouseenter: function() {
                                    var b = o(this);
                                    s && clearTimeout(s),
                                    b.addClass(u.app + "item-active"),
                                    s = setTimeout(function() {
                                        B.trigger("tkextend.mangnifier.open", [b, a])
                                    },
                                    200)
                                },
                                mouseleave: function() {
                                    s && clearTimeout(s),
                                    o(this).removeClass(u.app + "item-active"),
                                    B.trigger("tkextend.mangnifier.remove")
                                }
                            }),
                            o.tmpl(d, e).appendTo(k.container)
                        } else o("body").trigger("tk.recom.fail", ["不妙！高峰期遭遇堵车，请稍后再试。"])
                    };
                    o("body").one({
                        "tk.recom.success": function(b, c) {
                            y.stat("TabFr_Success_T", !0),
                            a(c, "retouch")
                        },
                        "tk.recom.fail": function() {
                            o("#J-TK-recon").html('<div id="TK-404-recom"></div>'),
                            o("body").trigger("tkstat.global.timeout")
                        }
                    }),
                    z.attr("data-show", "isData")
                }
            })
        };
        if (r && p) n = document.createDocumentFragment(),
        o.each(b.recomList,
        function(a, b) {
            b.index = a,
            o.extend(b, {
                isCom: !0
            }),
            i(b, n, v, w, !0)
        }),
        j.container.append(n),
        j.btn.addClass(u.app + "tabs-tab-selected"),
        k.container.removeClass(u.app + "tabs-panel-selected"),
        j.container.addClass(u.app + "tabs-panel-selected"),
        o("." + u.app + "more").attr("href", y.getUndertakePage(q.item.getID()) + "&utm_source=" + y.site() + "_more" + x + "&title=" + encodeURIComponent(q.item.getTitle()) + "&price=" + q.item.getPrice() + "&pic=http://img.taobaocdn.com/bao/uploaded/" + q.item.getImg() + "&sales=" + q.item.getSum() + "&style=" + encodeURIComponent(q.item.getItemStyle()) + (y.isManualDId ? "&isauto=1": "")),
        l = "3",
        z.on("mouseenter",
        function() {
            B.trigger("tkstat.global.display", [b, "3"])
        });
        else {
            if (b.sameList[0]) {
                n = document.createDocumentFragment(),
                o.each(b.sameList,
                function(a, b) {
                    b.index = a,
                    i(b, n, v, w)
                }),
                j.container.append(n),
                j.btn.addClass(u.app + "tabs-tab-selected");
                var F = 0;
                j.btn.on("mouseenter",
                function() {
                    F++,
                    F > 1 && D ? B.trigger("tkstat.global.display", [b, "2"]) : B.trigger("tkstat.global.display", [b, "1"]),
                    y.stat("TabFr_Success_T", !0)
                })
            } else b.similarList[0] && (j.btn.addClass(u.app + "tabs-tab-selected"), j.btn.find("div").html("推荐"), j.container.addClass(u.app + "tabs-panel-selected"), k.container.removeClass(u.app + "tabs-panel-selected"), n = document.createDocumentFragment(), o.each(b.similarList,
            function(a, b) {
                b.index = a,
                i(b, n, v, w)
            }), j.container.append(n), j.btn.addClass(u.app + "tabs-tab-selected"));
            E(),
            l = "1"
        }
        o("." + u.app + "tag-source").attr("title", "你正在搜索的原商品"),
        o("." + u.app + "tag-price").attr("title", "价格更便宜"),
        o("." + u.app + "tag-sum").attr("title", "月销量更高"),
        o("." + u.app + "tag-credit").attr("title", "店铺信誉更高"),
        m(b, c, l),
        o("." + u.app + "item").on({
            mouseenter: function() {
                var a = o(this);
                s && clearTimeout(s),
                a.addClass(u.app + "item-active"),
                s = setTimeout(function() {
                    B.trigger("tkextend.mangnifier.open", [a, b])
                },
                200)
            },
            mouseleave: function() {
                s && clearTimeout(s),
                o(this).removeClass(u.app + "item-active"),
                B.trigger("tkextend.mangnifier.remove")
            }
        })
    }
    function h(a, b, c) {
        var d, e, f = v["jpt.detail"];
        e = s.isTMDetail ? "_110x110.jpg": "_80x80.jpg",
        a.index < 4 && (w += "," + a.sourceId, d = c ? o.extend({},
        a, {
            app: u.app,
            img: a.picUrl + e,
            iscom: c,
            clickUrl: a.clickUrl + "?utm_medium=ttk&utm_source=" + y.site() + "_tuan"
        }) : o.extend({},
        a, {
            app: u.app,
            img: a.picUrl + e,
            clickUrl: a.clickUrl + "?utm_medium=ttk&utm_source=" + y.site() + "_tuan"
        }), o.tmpl(f, d).appendTo(b))
    }
    function i(a, b, c) {
        var d, e, f = v["tbtm.detail.box.product"];
        e = s.isTMDetail ? "_110x110.jpg": "_80x80.jpg",
        a.index < 4 && (w += "," + a.sourceId, c ? d = o.extend({},
        a, {
            app: u.app,
            img: a.picUrl + e,
            comUrl: a.clickUrl + "&on_comment=1",
            iscom: c
        }) : (d = o.extend({},
        a, {
            app: u.app,
            img: a.picUrl + e,
            comUrl: a.clickUrl + "&on_comment=1",
            clickUrl: a.clickUrl
        }), x[0] && o.each(x,
        function(b, c) {
            c.id === a.sourceId.toString() && c.st && (d.clickUrl = c.st)
        })), o.tmpl(f, d).appendTo(b))
    }
    function j(a, b) {
        var c, f = v["tbtm.detail.box.nofound"],
        g = {
            app: u.app
        },
        h = null;
        b.app = u.app,
        s.isTMDetail && (g.host = u.app + "TM-Detail"),
        d(b),
        o.tmpl(f, g).insertAfter(e()),
        c = o("#" + u.app + "404-same-bd"),
        o("#" + u.app + "404-same-info").on({
            mouseenter: function() {
                h && clearTimeout(h),
                h = setTimeout(function() {
                    o("body").trigger("tknofound.dialog.open")
                },
                300)
            },
            mouseleave: function() {
                h && clearTimeout(h),
                o("body").trigger("tknofound.dialog.remove")
            }
        }),
        o("body").trigger("tkstat.nofound.show", "text"),
        o("." + u.app + "404-same-item").on("click",
        function() {
            o("body").trigger("tkstat.nofound.click", "text")
        }),
        o("body").trigger("tkextend.global.toggle", [b]),
        o("." + u.app + "close").on("click",
        function() {
            o("body").trigger("tkextend.global.toggle", [b])
        }),
        o("." + u.app + "logo").on("click",
        function() {
            o("body").trigger("tkstat.global.logo")
        })
    }
    function k(a, b) {
        f(),
        o("." + u.app + "bd").html(b).addClass(u.app + "fail"),
        o("." + u.app + "tabs-bar").addClass(u.app + "hidden"),
        o("." + u.app + "close").addClass(u.app + "hidden"),
        o("body").trigger("tkstat.global.timeout")
    }
    function l(a, b) {
        f(),
        o("." + u.app + "bd").html(b).addClass(u.app + "fail"),
        o("." + u.app + "tabs-bar").addClass(u.app + "hidden"),
        o("." + u.app + "tabs-body").hide(),
        B.trigger("tkextend.global.toggle"),
        o("." + u.app + "close").on("click",
        function() {
            z = "touch",
            B.trigger("tkextend.global.toggle")
        }),
        o("body").trigger("tkstat.global.timeout")
    }
    function m(a, b, c) {
        var d = o("body");
        o("." + u.app + "tabs-button").on("mouseenter",
        function() {
            d.trigger("tkextend.tab.change", [this, a])
        }),
        o("." + u.app + "detail").on("click",
        function() {
            d.trigger("tkstat.global.product", [a, o(this), o(this).parents("." + u.app + "tabs-panel").index(), z, c])
        }),
        o("." + u.app + "comment").on("click",
        function() {
            d.trigger("tkextend.comment.toggle", [o(this), o(this).parents("." + u.app + "item").data("id")])
        }),
        o("." + u.app + "mangnifier").on("click",
        function() {
            d.trigger("tkstat.mangnifier.click")
        }),
        "promoprice" !== b && d.trigger("tkstat.global.success", [a, "default", c]).trigger("tkstat.global.tag", a),
        o("." + u.app + "dapei").on("click",
        function() {
            d.trigger("tkstat.dapei.click")
        }),
        o("#" + u.app + "con").on("click",
        function(b) {
            var c = o(b.target);
            c.hasClass(u.app + "more") ? d.trigger("tkstat.global.more") : c.hasClass(u.app + "close") ? (z = "touch", d.trigger("tkextend.global.toggle", [a])) : c.hasClass(u.app + "logo") && d.trigger("tkstat.global.logo")
        })
    }
    var n, o = a("../lib/jquery"),
    p = a("../lib/underscore"),
    q = a("../product"),
    r = a("../lib/dragdrop"),
    s = a("../host"),
    t = a("../models/models"),
    u = a("./prefix"),
    v = a("../templates"),
    w = "",
    x = [],
    y = a("../utils"),
    z = "default",
    A = p.once(function(a) {
        a.more += y.isManualDId ? "&isauto=1": ""
    }),
    B = o("body");
    a("../pricestat"),
    a("../lib/jquery.tmpl"),
    o(document).trigger("session:refreshed"),
    c.exports = {
        init: function() {
            o("body").on({
                "tk.sync.success": function(a, b) {
                    var c = !(b.sameList && b.sameList[0] || b.similarList && b.similarList[0] || b.recomList && b.recomList[0]),
                    d = b.saAdList && b.saAdList[0];
                    c && d ? (b.isNoFound = !0, j(a, b)) : c ? l(a, "不妙！高峰期遭遇堵车，请稍后再试。") : g(a, b)
                },
                "tk.sync.fail": k,
                "tk.sync.promoprice": function(a, b) {
                    var c = o("#" + u.app + "con");
                    setTimeout(function() {
                        c.addClass(u.app + "lock"),
                        setTimeout(function() {
                            g(a, b, "promoprice"),
                            c.removeClass(u.app + "lock")
                        },
                        1500)
                    },
                    500)
                }
            })
        }
    }
}),
__tk__define("views/render", ["./render.list", "./render.sms"],
function(a, b, c) {
    c.exports = {
        list: a("./render.list").init,
        sms: a("./render.sms").init
    }
}),
__tk__define("views/render.list", ["../lib/jquery", "../lib/underscore", "../product", "../utils", "../host", "./prefix", "../models/models", "../models/taobao", "../models/jsonp", "../models/api", "../utils/env", "../models/b2c", "../models/remind", "../models/lds", "../models/juxiao", "../models/tuan", "../templates", "../templates.jst", "../lib/jquery.tmpl"],
function(a, b, c) {
    var d, e, f = a("../lib/jquery"),
    g = a("../lib/underscore"),
    h = a("../product"),
    i = a("../host"),
    j = a("./prefix"),
    k = a("../models/models"),
    l = a("../templates"),
    m = a("../templates.jst"),
    n = a("../utils"),
    o = f("body");
    a("../lib/jquery.tmpl"),
    d = {
        getMedia: function() {
            return f("#" + j.app + "media")
        },
        restore: function() {
            if (i.isTBList || i.isTMList) {
                var a = h.item.getHref(),
                b = h.item.getID() || "P4P",
                c = !1;
                window.imgIdArr.length > 0 && f.each(window.imgIdArr,
                function(a, d) {
                    d.id === b && d.st && (c = d.st)
                }),
                c && (a = c),
                f("#" + j.app + "source-product").attr("href", a).removeClass(j.app + "hidden")
            } else f("#" + j.app + "source-product").attr("href", h.item.getHref()).removeClass(j.app + "hidden")
        },
        update: function() {
            var a, b = f(h.item.target),
            c = f("#" + j.app + "button");
            a = b.parents(".pic-box")[0] ? b.parents(".pic-box") : b,
            h.item.newBox = a,
            this.restore(),
            this.getMedia().css({
                top: b.offset().top + "px",
                left: b.offset().left + "px",
                width: b.outerWidth() + "px",
                height: b.outerHeight() + "px"
            }).css("visibility", "visible"),
            b.outerWidth() > 170 ? c.css({
                left: "30%"
            }) : b.outerWidth() > 80 ? c.css({
                left: "15%"
            }) : c.css({
                left: "0"
            })
        },
        template: {
            container: l["tbtm.list.box.container"],
            body: l["tbtm.list.box.body"],
            tab: l["tbtm.list.box.tab"],
            retab: l["tbtm.list.box.retab"]
        },
        render: function(a, b, c, d) {
            b ? this.renderInit(b, c) : this.renderBox(),
            b && b.issame && f(".TK-list-title").html("同款"),
            b && b.issimilar && f(".TK-list-title").html("推荐"),
            b && !b.isshowmore && f(".TK-list-ft").hide(),
            d && d()
        },
        renderBox: function() {
            var a = f("#" + j.app + "bd");
            a[0] ? a.html(f.tmpl(this.template.body, {
                app: j.app
            })) : f.tmpl(this.template.container, {
                app: j.app
            }).appendTo("body")
        },
        renderInit: function(a, b) {
            var c, d = f("#" + j.app + "list"),
            g = this,
            h = (0 === a.sameList.length && 0 === a.similarList.length, 0 === a.sameList.length && 0 === a.similarList.length),
            k = a.sameList[0],
            l = a.similarList[0],
            m = "recomList" in a && a.recomList[0],
            p = a.isTtsCategory,
            q = a.itemId;
            i.isAMXList && (a.host = j.app + "AMX-list"),
            d[0] ? d.html("") : (f("#" + j.app + "bd").html(f.tmpl(this.template.body, {
                app: j.app
            })), d = f("#" + j.app + "list"));
            var r = f("." + j.app + "bd-tab");
            if (r[0] && r.html(""), f("." + j.app + "bd-loading").hide(), f("." + j.app + "bd-itemlist").show(), f("." + j.app + "tag-move").attr("href", a.more + (n.isManualDId ? "&isauto=1": "")), h) this.addBiaolei(a);
            else if (m && h) e = document.createDocumentFragment(),
            f.each(a.recomList,
            function(a, b) {
                b.index = a,
                f.extend(b, {
                    isCom: !0
                }),
                g.renderProduct(b, e, p, q, !0)
            }),
            d.append(e),
            c = "3",
            f.tmpl(this.template.retab, {
                app: j.app
            }).appendTo(r),
            "auto" === b ? o.trigger("tkstat.global.success", [a, "image", "recom"]) : "promoprice" !== b && o.trigger("tkstat.global.success", [a, "touch", "recom"]),
            f("." + j.app + "tag-move").attr("href", a.more + "#nav_qul" + (n.isManualDId ? "&isauto=1": ""));
            else {
                if (k) {
                    if (e = document.createDocumentFragment(), f.each(a.sameList,
                    function(a, b) {
                        b.index = a,
                        g.renderProduct(b, e, p, q)
                    }), d.append(e), f.tmpl(this.template.tab, {
                        app: j.app
                    }).appendTo(r), l) {
                        var s = f("#J-" + j.app + "recon");
                        s.empty(),
                        e = document.createDocumentFragment(),
                        f.each(a.similarList,
                        function(a, b) {
                            b.index = a,
                            g.renderProduct(b, e, p, q)
                        }),
                        s.append(e),
                        f("#J-" + j.app + "re").attr("data-show", "isData")
                    }
                } else l && (e = document.createDocumentFragment(), f.each(a.similarList,
                function(a, b) {
                    b.index = a,
                    g.renderProduct(b, e, p, q)
                }), d.append(e), f.tmpl(this.template.retab, {
                    app: j.app
                }).appendTo(r));
                c = "1",
                "auto" === b ? o.trigger("tkstat.global.success", [a, "image", "same"]) : "promoprice" !== b && o.trigger("tkstat.global.success", [a, "touch", "same"])
            }
            f("." + j.app + "tag-source").attr("title", "你正在搜索的原商品"),
            f("." + j.app + "tag-price").attr("title", "价格更便宜"),
            f("." + j.app + "tag-sum").attr("title", "月销量更高"),
            f("." + j.app + "tag-credit").attr("title", "店铺信誉更高"),
            this.event(d, a, c)
        },
        addBiaolei: function(a) {
            var b = m["bijia/home.list.biaolei"];
            f(".TK-ul-biaolei-list").empty().append(b({
                list: a.dividedList
            }))
        },
        renderTuanProduct: function(a, b, c) {
            var d, e = l["tbtm.list.tuan.product"];
            a.index < 5 && (n.listProductIds += "," + a.sourceId, d = c ? g.extend({},
            a, {
                app: j.app,
                img: a.ttsPicUrl,
                clickUrl: a.clickUrl + "?utm_medium=ttk&utm_source=" + n.site() + "_tuan"
            }) : g.extend({},
            a, {
                app: j.app,
                img: a.ttsPicUrl,
                clickUrl: a.clickUrl + "?utm_medium=ttk&utm_source=" + n.site() + "_tuan"
            }), f.tmpl(e, d).appendTo(b))
        },
        renderProduct: function(a, b, c, d, e) {
            var h, i = l["tbtm.list.box.product"];
            a.index < 5 && (n.listProductIds += "," + a.sourceId, e ? h = g.extend({},
            a, {
                app: j.app,
                img: a.ttsPicUrl,
                comUrl: a.clickUrl + "&on_comment=1"
            }) : (h = g.extend({},
            a, {
                app: j.app,
                img: a.ttsPicUrl,
                comUrl: a.clickUrl + "&on_comment=1",
                clickUrl: a.clickUrl
            }), n.listProductIdArr[0] && f.each(n.listProductIdArr,
            function(b, c) {
                c.id === a.sourceId.toString() && c.st && (h.clickUrl = c.st)
            })), f.tmpl(i, h).appendTo(b))
        },
        event: function(a, b) {
            var c = f("#" + j.app + "list li"),
            d = f("." + j.app + "bd-tab a"),
            g = f("#J-" + j.app + "same"),
            h = f("#J-" + j.app + "re"),
            i = f("#J-" + j.app + "recon"),
            l = j.app + "select",
            m = j.app + "active",
            p = this,
            q = !1,
            r = "";
            r += "&cid=" + b.cid,
            "undefined" != typeof b.sex && (r += "&sex=" + b.sex),
            c.on("mouseenter",
            function() {
                var a = f(this);
                c.removeClass(l),
                a.addClass(l)
            }),
            c.eq(0).trigger("mouseenter");
            var s = 1;
            g.on("mouseenter",
            function() {
                a.show(),
                i.hide(),
                s++,
                d.removeClass(m),
                f(this).addClass(m),
                s > 1 ? o.trigger("tkstat.global.display", [b, "2"]) : o.trigger("tkstat.global.display", [b, "1"]),
                n.stat("Focus_Tab", !0),
                n.stat("TabFr_Success_T", !0)
            }),
            h.on("mouseenter",
            function() {
                if (d.removeClass(m), h.addClass(m), n.stat("Focus_Tab", !0), a.hide(), i.show(), f("#" + j.app + "move").attr("href", "http://search.taotaosou.com/transfer.htm?//www.chaoji99.com/?utm_medium=ttk&utm_source=" + n.site() + "_more_tuan"), h.attr("data-show")) q && n.stat("TabFr_Success_T", !0),
                o.trigger("tkstat.global.display", [b, "4"]);
                else {
                    k.reCom();
                    var c = function(a, b) {
                        var c = a.recomList[0];
                        if (c) {
                            q = !0,
                            e = document.createDocumentFragment(),
                            f.each(a.recomList,
                            function(a, b) {
                                b.index = a,
                                f.extend(b, {
                                    isCom: !0
                                }),
                                p.renderTuanProduct(b, e, !0)
                            }),
                            i.append(e);
                            var d = f("#J-" + j.app + "recon li");
                            d.on("mouseenter",
                            function() {
                                var a = f(this);
                                d.removeClass(l),
                                a.addClass(l)
                            }),
                            "retouch" === b && o.trigger("tkstat.global.display", [a, "4"]),
                            f("#J-TK-recon .J_alink").on("click",
                            function() {
                                o.trigger("tkstat.global.product", [a, f(this), void 0, void 0, "4"])
                            })
                        } else o.trigger("tk.recom.fail", ["不妙！高峰期遭遇堵车，请稍后再试。"])
                    };
                    o.one({
                        "tk.recom.success": function(a, b) {
                            n.stat("TabFr_Success_T", !0),
                            c(b, "retouch")
                        },
                        "tk.recom.promoprice": function(a, b) {
                            i[0] && (i.html(""), c(b, "promoprice"))
                        },
                        "tk.recom.fail": function() {
                            f("#J-TK-recon").html('<div id="TK-404-recom"></div>'),
                            o.trigger("tkstat.global.timeout")
                        }
                    }),
                    h.attr("data-show", "isData")
                }
            })
        },
        noFound: function(a) {
            var b = l["tbtm.list.box.nofound"];
            try {
                f("#" + j.app + "bd").html(f.tmpl(b, a)),
                o.trigger("tkstat.nofound.show", "pic"),
                f("." + j.app + "404-click").on("click",
                function() {
                    o.trigger("tkstat.nofound.click", "pic")
                }),
                f("." + j.app + "close").on("click",
                function() {
                    o.trigger("tklist.global.remove")
                })
            } catch(c) {}
        },
        fail: function(a) {
            this.renderBox(),
            f("#" + j.app + "bd").html(a).addClass(j.app + "fail"),
            o.trigger("tkstat.global.timeout")
        }
    },
    c.exports = {
        init: d
    }
}),
__tk__define("views/render.sms", ["../lib/jquery", "../lib/underscore", "../product", "../utils", "../host", "./prefix", "../templates", "../lib/jquery.tmpl"],
function(a, b, c) {
    var d, e, f = a("../lib/jquery"),
    g = a("../lib/underscore"),
    h = a("../product"),
    i = a("../host"),
    j = a("./prefix"),
    k = a("../templates"),
    l = f("body");
    a("../lib/jquery.tmpl"),
    d = {
        getMedia: function() {
            return f("#" + j.app + "media")
        },
        restore: function() {
            if (i.isTBList || i.isTMList) {
                var a = h.item.getHref(),
                b = h.item.getID() || "P4P",
                c = !1;
                window.imgIdArr.length > 0 && f.each(window.imgIdArr,
                function(a, d) {
                    d.id === b && d.st && (c = !0)
                }),
                c && (a = "http://search.taotaosou.com/transfer.htm?" + a),
                f("#" + j.app + "source-product").attr("href", a).removeClass(j.app + "hidden")
            } else f("#" + j.app + "source-product").attr("href", h.item.getHref()).removeClass(j.app + "hidden")
        },
        update: function() {
            var a, b = f(h.item.target),
            c = f("#" + j.app + "button");
            a = b.parents(".pic-box")[0] ? b.parents(".pic-box") : b,
            h.item.newBox = a,
            this.restore(),
            this.getMedia().css({
                top: b.offset().top + "px",
                left: b.offset().left + "px",
                width: b.outerWidth() + "px",
                height: b.outerHeight() + "px"
            }).css("visibility", "visible"),
            b.outerWidth() > 170 ? c.css({
                left: "30%"
            }) : b.outerWidth() > 80 ? c.css({
                left: "15%"
            }) : c.css({
                left: "0"
            })
        },
        template: {
            container: k["mlsmgj.list.box.container"],
            body: k["mlsmgj.list.box.body"],
            tab: k["mlsmgj.list.box.tab"],
            retab: k["mlsmgj.list.box.retab"]
        },
        render: function(a, b, c) {
            b ? this.renderInit(b, c) : this.renderBox()
        },
        renderBox: function() {
            var a = f("#" + j.app + "bd");
            a[0] ? a.html(f.tmpl(this.template.body, {
                app: j.app
            })) : f.tmpl(this.template.container, {
                app: j.app
            }).appendTo("body")
        },
        renderInit: function(a, b) {
            var c, d = f("#" + j.app + "list"),
            g = this,
            h = 0 === a.sameList.length && 0 === a.similarList.length,
            i = 0 === a.sameList.length && 0 === a.similarList.length,
            k = a.sameList[0],
            m = a.similarList[0],
            n = "recomList" in a && a.recomList[0],
            o = a.isTtsCategory,
            p = a.itemId;
            d[0] ? d.html("") : (f("#" + j.app + "bd").html(f.tmpl(this.template.body, {
                app: j.app
            })), d = f("#" + j.app + "list"));
            var q = f("." + j.app + "bd-tab");
            q[0] && q.html(""),
            f("." + j.app + "bd-loading").hide(),
            f("." + j.app + "bd-itemlist").show(),
            f("." + j.app + "tag-move").attr("href", a.more),
            h && !n ? this.noFound(a) : n && i ? (e = document.createDocumentFragment(), f.each(a.recomList,
            function(a, b) {
                b.index = a,
                f.extend(b, {
                    isCom: !0
                }),
                g.renderProduct(b, e, o, p, !0)
            }), d.append(e), c = "3", f.tmpl(this.template.retab, {
                app: j.app
            }).appendTo(q), "auto" === b ? l.trigger("tkstat.global.success", [a, "image", "recom"]) : "promoprice" !== b && l.trigger("tkstat.global.success", [a, "touch", "recom"]), f("." + j.app + "tag-move").attr("href", a.more + "#nav_qul")) : (k ? (e = document.createDocumentFragment(), f.each(a.sameList,
            function(a, b) {
                b.index = a,
                g.renderProduct(b, e, o, p)
            }), d.append(e), f.tmpl(this.template.tab, {
                app: j.app
            }).appendTo(q)) : m && (e = document.createDocumentFragment(), f.each(a.similarList,
            function(a, b) {
                b.index = a,
                g.renderProduct(b, e, o, p)
            }), d.append(e), f.tmpl(this.template.retab, {
                app: j.app
            }).appendTo(q)), c = "1", "auto" === b ? l.trigger("tkstat.global.success", [a, "image", "same"]) : "promoprice" !== b && l.trigger("tkstat.global.success", [a, "touch", "same"])),
            f("." + j.app + "tag-source").attr("title", "你正在搜索的原商品"),
            f("." + j.app + "tag-price").attr("title", "价格更便宜"),
            f("." + j.app + "tag-sum").attr("title", "月销量更高"),
            f("." + j.app + "tag-credit").attr("title", "店铺信誉更高"),
            this.event(d, a, c)
        },
        renderProduct: function(a, b, c, d, e) {
            var h, i = k["mlsmgj.list.box.product"];
            h = e ? g.extend({},
            a, {
                app: j.app,
                img: a.picUrl + "_60x60.jpg",
                comUrl: a.clickUrl + "&on_comment=1"
            }) : g.extend({},
            a, {
                app: j.app,
                img: a.picUrl + "_60x60.jpg",
                comUrl: a.clickUrl + "&on_comment=1",
                clickUrl: a.clickUrl + "&key_price=" + a.price + "+" + c + "+" + d
            }),
            a.index < 4 && f.tmpl(i, h).appendTo(b)
        },
        event: function() {
            var a = f("#" + j.app + "list li"),
            b = j.app + "select";
            a.on("mouseenter",
            function() {
                var c = f(this);
                a.removeClass(b),
                c.addClass(b)
            }),
            a.eq(0).trigger("mouseenter"),
            f("." + j.app + "close").on("click",
            function() {
                l.trigger("tklist.global.remove")
            })
        },
        noFound: function(a) {
            var b = k["tbtm.list.box.nofound"];
            f("#" + j.app + "bd").html(f.tmpl(b, a)),
            l.trigger("tkstat.nofound.show", "pic"),
            f("." + j.app + "404-click").on("click",
            function() {
                l.trigger("tkstat.nofound.click", "pic")
            }),
            f("." + j.app + "close").on("click",
            function() {
                l.trigger("tklist.global.remove")
            })
        },
        fail: function(a) {
            this.renderBox(),
            f("#" + j.app + "bd").html(a).addClass(j.app + "fail"),
            l.trigger("tkstat.global.timeout")
        }
    },
    c.exports = {
        init: d
    }
}),
__tk__define("views/views", ["../lib/jquery", "../views/prefix", "../host", "../utils", "./event.handle", "../lib/underscore", "../product", "./bijia/main", "./bijia/taobao", "../templates.jst", "../utils/tts_stat", "../models/models", "../models/taobao", "../models/jsonp", "./prefix", "../models/api", "../utils/env", "../models/b2c", "../models/remind", "../models/lds", "../models/juxiao", "../models/tuan", "../configureView", "../configureModel", "../mustache_helpers", "../lib/handlebars", "./bijia/taobao.remind", "./remind/main", "./remind/qutu", "./remind/under", "./bijia/list", "../models/ditong", "../lib/jquery.popunder", "./juzi/taobao", "./juzi/taobao.qutu", "./juzi/mid", "../lib/jquery.tmpl", "./juzi/mid.qutu", "./juzi/mid.under", "./juxiao", "./juxiaoJuzi", "./cart", "./lds/main", "../lib/dragdrop", "../templates", "./alimama", "./db11Banner", "../spider"],
function(a, b, c) {
    function d() {
        o.isJuzi() || (p.list(), setTimeout(function() {
            t.trigger("tklist.global.init")
        },
        200), l(window).on("scroll",
        function() {
            t.trigger("tklist.global.init")
        }), n.tbList && l("#list-filterForm").on("click",
        function(a) {
            a.target.parentNode.className.match(/J_Ajax/) && setTimeout(function() {
                t.trigger("tklist.global.init")
            },
            300)
        }), t.on("click",
        function(a) {
            var b = a.target,
            c = b.parentNode;
            if (b.id !== m.app + "source-product" && ("A" === b.nodeName ? t.trigger("tkstat.source.productclick", [b]) : "A" === c.nodeName && t.trigger("tkstat.source.productclick", [c])), (n.isTBList || n.isTMList) && ("A" === b.nodeName || "A" === c.nodeName) && q.isString(b.href) && !q.isElement(l(b).parents("#TK-con")[0]) && b.href.match(/item.htm|simba.taobao.com|etao.com/)) {
                var d = o.sliceID(b.href) || "P4P",
                e = !1,
                f = b.href;
                k.imgIdArr.length > 0 && l.each(k.imgIdArr,
                function(a, b) {
                    b.id === d && b.st && (e = b.st)
                }),
                e && (a.preventDefault(), f = e, k.open(f))
            }
        }))
    }
    function e(b) {
        setTimeout(function() {
            var b = function(a) {
                var b = new RegExp("(^|&)" + a + "=([^&]*)(&|$)"),
                c = window.location.search.substr(1).match(b);
                return null !== c ? c[2] : null
            },
            c = b("id"),
            d = b("itemid"),
            e = a("../product"),
            f = function(a) {
                o.kLog({
                    systemName: "visit",
                    itemId: a,
                    onSale: 0,
                    url: r.href,
                    ref: encodeURIComponent(document.referrer)
                })
            },
            g = function() {
                o.kLog({
                    systemName: "visit",
                    itemId: e.item.getID(),
                    price: e.item.getPrice(),
                    onSale: 1,
                    url: r.href,
                    ref: encodeURIComponent(document.referrer)
                })
            };
            n.isTBDetail || n.isTMDetail ? r.href.match(/noitem/) ? f(d) : l(".tb-hint")[0] || l(".sold-out-tit")[0] ? f(c) : g() : n.isB2CDetail ? l(".m-itemover-title")[0] ? f(e.item.getID()) : g() : n.isYHDDetail ? l(".sorry")[0] ? f(encodeURIComponent(r.href.match(/[0-9]+/))) : g() : n.isDDDetail ? l(".notfound_404_right")[0] ? f(encodeURIComponent(r.href.match(/[0-9]+/))) : g() : n.isVjiaDetial && (l("body").html().match(/您来晚了\，该商品已售空/) ? f(e.item.getID()) : g())
        },
        2e3)
    }
    function f() {
        var b = function() {
            var a;
            return n.isTBDetail || n.isTMDetail ? a = l("#J_ImgBooth")[0] : n.isB2CDetail ? a = l(".land_a_pic")[0] ? l(".land_a_pic .err-product")[0] : document.getElementById("spec-big") ? l("#spec-big img")[0] : l(".focus_img")[0] ? l(".focus_img")[0] : l("#spec-n1 img")[0] : n.isYHDDetail ? a = l("#J_prodImg")[0] : n.isVjiaDetial ? a = l(".sp-bigImg img")[0] : n.isDDDetail ? a = l("#largePic")[0] : n.isSuningDetail ? a = document.getElementById("bigImage") ? document.getElementById("bigImage") : l("#bigImg img")[0] : n.isVanclDetail ? a = l("#midimg")[0] : n.isMLSDetail ? a = l(".twitter_pic")[0] : n.isMGJDetail ? a = l("#J_BigImg")[0] ? l("#J_BigImg")[0] : l(".gallery_big img").eq(0)[0] : n.isVipDetail ? a = l(".zoomPad img")[0] : n.isGMDetail ? a = l(".j-bpic-b")[0] : n.isAMXDetail ? document.getElementById("prodImage") ? a = document.getElementById("prodImage") : document.getElementById("imgTagWrapperId") ? a = l("#imgTagWrapperId img")[0] : document.getElementById("img-canvas") && (a = l("#img-canvas img")[0]) : n.isPaipaiDetail ? a = l(".buy_ewm")[0] : n.isYixunDetail ? a = document.getElementById("xgalleryImg") : n.isJumeiDetail ? a = document.getElementById("product_img") || document.getElementById("detail_main_img") || l(".etalage_thumb_image")[0] : n.isJuDetail ? a = l(".J_zoom")[0] : n.isAlitripDetail ? a = l("#J_GlMain img")[0] : n.isLeFengDeatil ? a = l(".dity-pic img")[0] : n.isKaoLaDetail ? a = l("#showImg") : n.isBeiBeiDetail ? a = l(".main-img-cont img")[0] : n.isFengQuDetail ? a = l(".zoomImg")[0] : n.isMiaDetail ? a = l(".big img")[0] : n.isStrawberrynetDetail ? a = l(".cloudzoom")[0] : n.isYmatouDetail && (a = l(".itemImg")[0]),
            a
        },
        c = a("./bijia/main");
        try {
            if (l("body").trigger("tk.global.init", [b(),
            function() {
                t.trigger("tkstat.global.detailpv")
            }]), e(b()), o.isJuzi()) {
                if (!window.tk_setting_all[57] || !+window.tk_setting_all[57].s) return;
                a("./juzi/taobao").init(),
                n.isTaobao || n.isTM ? window.tk_setting_all[41] && +window.tk_setting_all[41].s && a("./juxiao").init() : window.tk_setting_all[41] && +window.tk_setting_all[41].s && a("./juxiaoJuzi").init(),
                window.tk_setting_all[48] && +window.tk_setting_all[48].s && i()
            } else c.detail(),
            n.isTaobao || n.isTM || window.tk_setting_all[41] && +window.tk_setting_all[41].s && a("./juxiao").init(),
            window.tk_setting_all[48] && +window.tk_setting_all[48].s && i()
        } catch(d) {}
    }
    function g() {
        o.isJuzi() || setTimeout(function() {
            var b = a("./bijia/main");
            window.tk_setting_all[42] && +window.tk_setting_all[42].s && b.list()
        },
        1500)
    }
    function h() {
        o.isJuzi() || a("./cart").init()
    }
    function i() {
        if (o.isJuzi() || n.isTBDetail || n.isTMDetail) l.getJSON("//union.taotaosou.com/getConfig.do?name=jsonp&unionid=10003028&host=" + encodeURIComponent(r.host) + "&jsonp=?&url=" + encodeURIComponent(r.href),
        function(b) {
            k.MEDIA_config = b;
            var c = a("./lds/main");
            c.init()
        });
        else {
            var b = null;
            b = setInterval(function() {
                if ("MEDIA_config" in k) {
                    var c = a("./lds/main");
                    c.init(),
                    clearInterval(b),
                    b = null
                }
            },
            200)
        }
    }
    function j() {
        if (o.isJuzi() && a("./db11Banner"), s && t.trigger("tkdebug.console"), n.isWeibo && o.statLog_one({
            systemName: "ttk_tbUserMsg_log",
            nick: "",
            level: "",
            weibo: l(".gn_name .S_txt1").text(),
            mobile: ""
        }), u.taobao.def) {
            o.loadCSS("//www.gmf.com/browser-static/taobao/css/bijia/taobao.css"),
            (n.isTBCart || n.isTMCart || n.isJDCart || n.isMLSCart || n.isMGJCart || n.isVIPCart || n.isLeFengCart || n.isKaoLaCart || n.isBeiBeiCart) && h(),
            u.taobao.model.list && (n.isTBList || n.isTMList || n.isB2CList || n.isVanclList || n.isPaipaiList || n.isHomeTaobao || n.isHomeTmall || n.isHomeJD || n.isYHDList || n.isZhe800List || n.isMGJList || n.isMLSList || n.isVipList || n.isSuningList || n.isYixunList || n.isHomeMLS || n.isHomeVIP || n.isHomeSuning || n.isYHDHome || n.isHomeJiuxian || n.isHomeGM || n.isGMList || n.isHomeJiuxian || n.isHomeDD || n.isHomeAMX || n.isHomeZhe800 || n.isHomeNuomi || n.isHomePaipai || n.isHomeMeituan || n.isHomeJumei || n.isHomeLeFeng || n.isLeFengList || n.isLeFengBrand || n.isLeFengMall || n.isHomeKaoLa || n.isKaoLaList || n.isNotBeiBeiDetail || n.isFengQu || n.isMia || n.isStrawberrynet || n.isYmatou || n.isYmatouList ? g() : (n.isAMXList || n.isTMShop || n.isTBShop || n.isTBFav || n.isVanclList || n.isHomeMGJ || n.isHomeNuomi || n.isHomePaipai || n.isHomeMeituan || n.isHomeJumei || n.isTMSubList) && g(), n.isTBList || n.isTMList || n.isTMShop || n.isTBShop || n.isTBFav || n.isVanclList || n.isTMSubList || n.isTBSub ? d() : n.isB2CList || n.isYHDList || n.isVjiaList || n.isDDList || n.isSuningList || n.isYixunList || n.isJDSub ? d() : n.isMLSList || n.isMGJList || n.isGMList || n.isVipList || n.isAMXList || n.isPaipaiList || n.isHomeAMX || n.isJumeiList ? d() : n.isLeFengList || n.isLeFengBrand || n.isKaoLaList || n.isBeiBeiList ? d() : (n.isFengQu || n.isMia || n.isStrawberrynet || n.isYmatou || n.isYmatouList) && d()),
            u.taobao.model.detail && (n.isBeiBeiDetail || n.isKaoLaDetail || n.isLeFengDeatil || n.isTBDetail || n.isTMDetail || n.isB2CDetail || n.isYixunDetail || n.isVipDetail || n.isMGJDetail || n.isMLSDetail || n.isJuDetail ? f() : n.isYHDDetail || n.isGMDetail || n.isPaipaiDetail || n.isJumeiDetail || n.isVjiaDetial || n.isDDDetail || n.isSuningDetail || n.isVanclDetail || n.isAMXDetail || n.isAlitripDetail ? f() : (n.isFengQuDetail || n.isMiaDetail || n.isStrawberrynetDetail || n.isYmatouDetail) && f()),
            window.tk_setting_all[52] && +window.tk_setting_all[52].s && a("../spider").init();
            var b, c = [];
            "item.taobao.com" === r.host && r.href.match(/noitem/) ? (b = {
                pid: o.getUrlParam(r.href, "itemid"),
                p: "",
                m: "",
                sale: 0,
                cco: "",
                sco: "",
                ty: "1"
            },
            c.push(b), o.statLog({
                systemName: "ttk_collect",
                v: encodeURIComponent(JSON.stringify(c))
            })) : "detail.tmall.com" === r.host && r.href.match(/noitem/) && (b = {
                pid: o.getUrlParam(document.referrer, "itemid"),
                p: "",
                m: "",
                sale: 0,
                cco: "",
                sco: "",
                ty: "1"
            },
            c.push(b), o.statLog({
                systemName: "ttk_collect",
                v: encodeURIComponent(JSON.stringify(c))
            }))
        }
    }
    var k = window,
    l = a("../lib/jquery"),
    m = a("../views/prefix"),
    n = a("../host"),
    o = a("../utils"),
    p = a("./event.handle"),
    q = a("../lib/underscore"),
    r = window.location,
    s = r.href.match(/&debug=true/),
    t = l("body"),
    u = o.getConfig();
    c.exports = {
        init: j
    }
});